PdfCraft v0.15.0
- Reject non-hex characters in XFA image hash parsing by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/4630
- Fix AFNumber format printing "inf" for large finite values by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/4592
- Reject '+' as a hex digit in FormCalc url Decode escapes by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/4586
- Fix FormCalc Round overflowing to infinity for large values by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/4508
- M7: dotted day-first dates in header and footer by @Hagma2023 in https://github.com/storytold/pdfcraft/pull/4503
- fix(xfdf): an imported FDF comment's pop-up is placed on the page, not copied in as a direct dictionary by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/4493
- fix(platform): a saved file keeps its hidden and system attributes on Windows by @FriedCerebrum in https://github.com/storytold/pdfcraft/pull/4647
- fix(edit): resizing an image under a shared clip scales its own clip too by @meethere in https://github.com/storytold/pdfcraft/pull/4639
- M3: the accessible window is named with the window title (#4614) by @Lcoding15 in https://github.com/storytold/pdfcraft/pull/4640
- M6: a round XFA check box's field highlight is round, as a radio button's is by @EricKaden in https://github.com/storytold/pdfcraft/pull/4512
- fix(xfdf): an empty field in imported XFDF clears the field, as FDF and XML do by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/4483
- M7.5: crop an added image by more than half from one side by @Hagma2023 in https://github.com/storytold/pdfcraft/pull/4521
- M9: name a laid-out XFA form's signature fields by their SOM path, so other viewers find the signature by @EricKaden in https://github.com/storytold/pdfcraft/pull/4507
- M3: give the kept button release back before the pointer leaves (Wayland) by @bmh129 in https://github.com/storytold/pdfcraft/pull/4500
- Tests: XFA calculation tests no longer fail when the machine is busy by @dotCooCoo in https://github.com/storytold/pdfcraft/pull/4535
- i18n(fa): add Persian interface translation by @shahriar-hd in https://github.com/storytold/pdfcraft/pull/4558
- M6: a static XFA form whose data fills thousands of fields opens in seconds (#4637) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4638
- M4: Document Properties reads a named opening destination's page, so choosing page 1 replaces it (ISO 32000-2 12.3.2.4) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4574
- M7: a moved text box's drag preview shows the box alone (#4464) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4475
- M2: a luminosity soft mask in a DeviceCMYK group converts as ISO 32000-2 10.4.2 says, so 100% K masks fully by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4423
- M3: an attachment's row opens on a double-click and has a right-click menu (#3466) by @Lcoding15 in https://github.com/storytold/pdfcraft/pull/4513
- M10: Word export keeps an italic run inside its sentence's paragraph (#4158) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4411
- M6: with NeedAppearances, check boxes and radio buttons draw their /MK caption (ISO 32000-2 Table 224) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4454
- M3: a Page tools menu in the Pages panel (#4415) by @Lcoding15 in https://github.com/storytold/pdfcraft/pull/4583
- refactor(ui): side panels on craft-ui task panes and the shared rail by @aiongg in https://github.com/storytold/pdfcraft/pull/4606
- Migrate PdfCraft to egui 0.37 by @skylartaylor in https://github.com/storytold/pdfcraft/pull/4591
- feat: startup update prompt modal and direct self-updating by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4654
- proposal(redact): prevent retention of confidential vector paths behind clipping (F-008) by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4577
- build: pin craft-update to craft-libs main (495e597) by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4721
- build: pin craft-update to craft-libs main (495e597) by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4728
- chore(deps): bump 11 safe dependency updates by @skylartaylor in https://github.com/storytold/pdfcraft/pull/4737
- test(ui): CJK interface tests skip without craft-fonts by @aiongg in https://github.com/storytold/pdfcraft/pull/4706
- feat(ui): menus from craft-menu, native on macOS by @aiongg in https://github.com/storytold/pdfcraft/pull/4752
- refactor(engine): split lib.rs into modules by @alehel in https://github.com/storytold/pdfcraft/pull/4730
- proposal(redact): unlink unused Type 3 glyph programs and fonts on redaction (F-011) by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4579
- fix(sonar): clear css:S9441 and S3776 in forms actions by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4747
- ci: require nextest 0.9.150 by @skylartaylor in https://github.com/storytold/pdfcraft/pull/4880
- refactor: shared module layout (craft-contrib#20) by @aiongg in https://github.com/storytold/pdfcraft/pull/4889
- perf(engine): export page images on worker threads (about 80% less wall time) by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/5026
- Packaging: fetch OCR models from the ONNX URLs (legacy RTEN URLs return 403) by @Jeremy8776 in https://github.com/storytold/pdfcraft/pull/5039
- refactor(ui): use craft-ui's ComboBox for every dropdown by @aiongg in https://github.com/storytold/pdfcraft/pull/4988
- Windows installation policy: PdfCraft by @Jeremy8776 in https://github.com/storytold/pdfcraft/pull/4892
- Enforce Rust coding standards via Clippy by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4897
- deps: pin craft-libs at e11f9d9a (craft-menu loads on Cargo before 1.99) by @aiongg in https://github.com/storytold/pdfcraft/pull/5094
- @Hagma2023 made their first contribution in https://github.com/storytold/pdfcraft/pull/4503
- @FriedCerebrum made their first contribution in https://github.com/storytold/pdfcraft/pull/4647
- @shahriar-hd made their first contribution in https://github.com/storytold/pdfcraft/pull/4558
- @Jeremy8776 made their first contribution in https://github.com/storytold/pdfcraft/pull/5039
Full Changelog: https://github.com/storytold/pdfcraft/compare/v0.14.0...v0.15.0
PdfCraft v0.14.0
- fix(cos): one decode budget per page walk, so repeated stream references cannot multiply decoding by @aiongg in https://github.com/storytold/pdfcraft/pull/4114
- fix(cos, content, filters, crypt, model, render, print, a11y): bound the work that repeated keys, streams and page values multiply by @aiongg in https://github.com/storytold/pdfcraft/pull/4128
- fix(limits): bound the decoding and listing work that repeated references and small inputs multiply by @aiongg in https://github.com/storytold/pdfcraft/pull/4117
- fix(js, xfa): bound the text and work that form scripts and XFA data can multiply by @aiongg in https://github.com/storytold/pdfcraft/pull/4121
- fix(edit,organize,create): bound the work hostile files cause in editing, page organizing and image import by @aiongg in https://github.com/storytold/pdfcraft/pull/4151
- chore(sonar): exclude vendored crates and the spec-mandated MD5/RIPEMD-160 (SonarCloud rust:S4790) by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4169
- fix(packaging): use [[ tests and name positional parameters (SonarCloud shelldre:S7688, S7679, S7682, S131) by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4170
- fix(audit): find covers the audit missed, bound its work and honour the copy permission by @aiongg in https://github.com/storytold/pdfcraft/pull/4109
- fix(xfdf, sign, preflight, engine, forms, measure, annot): bound repeated work in form exchange, preflight and export, and check what imports and time stamps claim by @aiongg in https://github.com/storytold/pdfcraft/pull/4129
- M14: update ctutils to 0.4.5 for RUSTSEC-2026-0385 by @Jayesh-Prajapati9 in https://github.com/storytold/pdfcraft/pull/4220
- Fix FormCalc Str() printing small negative numbers as "-0" by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/4108
- Accept long unit names in FormCalc UnitValue by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/4116
- test(sign): serialize the Keychain search-list tests by @ffishman in https://github.com/storytold/pdfcraft/pull/4124
- M9: sign_list lists a hidden or NoView signature field as not visible by @EricKaden in https://github.com/storytold/pdfcraft/pull/4141
- M6: scripts see xfa_version, and xfa_installed in XFA forms by @EricKaden in https://github.com/storytold/pdfcraft/pull/4142
- Regression tests for #246, #843 and #2028 by @skylartaylor in https://github.com/storytold/pdfcraft/pull/4143
- fix(optimize): keep a destination referenced only through an indirect /Dest by @Matoo125 in https://github.com/storytold/pdfcraft/pull/4212
- CI: the workflow token is read-only by @oracola91 in https://github.com/storytold/pdfcraft/pull/4026
- ci(deps): bump Swatinem/rust-cache from 2.9.2 to 2.9.3 in the actions group by @dependabot[bot] in https://github.com/storytold/pdfcraft/pull/4227
- FreeBSD: package the aarch64 cross build (craft-common-actions#39) by @zuujiscom in https://github.com/storytold/pdfcraft/pull/4137
- Reject non-hex characters in XFDF colour parsing by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/4145
- fix(edit): setting a paragraph's width no longer panics on text larger than a page by @Matoo125 in https://github.com/storytold/pdfcraft/pull/4110
- fix(redact,sign,cos): close the still-open high-severity scan findings by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4244
- fix(docs): one row per crate in the vendor README table and remove duplicates by @alehel in https://github.com/storytold/pdfcraft/pull/4015
- M10: odd and even pages are page numbers, as Acrobat counts them (#3984) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4034
- fix: Issue #4017. Flattening removes empty fields it cannot draw by @Ridzzz0Alam in https://github.com/storytold/pdfcraft/pull/4033
- M11: Convert to PDF/A needs the owner's permission on an encrypted document (#3921) by @Jayesh-Prajapati9 in https://github.com/storytold/pdfcraft/pull/4203
- M5: stamp_custom places a picture fitted inside a rect (#4077) by @Jayesh-Prajapati9 in https://github.com/storytold/pdfcraft/pull/4233
- M5: sticky notes draw the icon they name (ISO 32000-2 Table 175) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4182
- M3: a Launch link that names a PDF opens it in PdfCraft (ISO 32000-2 §12.6.4.6) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4185
- ui: prevent top item clipping under panel header separators by @piyushgoel2808 in https://github.com/storytold/pdfcraft/pull/4073
- fix(ui): keep colour popups open when "+" opens the custom colour picker by @agent-reed in https://github.com/storytold/pdfcraft/pull/4066
- M6: calculations read their notation only from a comment, and a regex after a condition as a regex by @Piohrun in https://github.com/storytold/pdfcraft/pull/3993
- Accessibility: set a table's Summary and a header cell's Scope (#4103, #4104) by @pat26-dotcom in https://github.com/storytold/pdfcraft/pull/4130
- M4: bookmarks show and set their title colour and style (ISO 32000-2 Tables 151, 152) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4171
- Cancel stale Organize page drags after document changes by @ahmadmuj in https://github.com/storytold/pdfcraft/pull/4039
- M2: text extraction finishes a column before the next one across a paragraph gap (#3658) by @Jayesh-Prajapati9 in https://github.com/storytold/pdfcraft/pull/4214
- fix: Issue #4076, pdfcraft --help prints usage instead of opening the app. by @Ridzzz0Alam in https://github.com/storytold/pdfcraft/pull/4093
- Open Save As and export dialogs in the document's own folder by @aalbertiarchitecte in https://github.com/storytold/pdfcraft/pull/4012
- M9: visible signatures read upright on rotated pages by @vjeko2404 in https://github.com/storytold/pdfcraft/pull/4067
- G14: Romanian: translate the 64 catalog rows still in English by @vioreltus in https://github.com/storytold/pdfcraft/pull/4016
- Packaging: pin the signing client and appimagetool, and check their hashes by @aiongg in https://github.com/storytold/pdfcraft/pull/3731
- fix(links): resolve remote document paths with craft-docpath's resolve_absolute by @aiongg in https://github.com/storytold/pdfcraft/pull/3730
- Allow OFL typefaces, Noto CJK and Source Han included (AGENTS.md §1.1) by @aiongg in https://github.com/storytold/pdfcraft/pull/3908
- CI: nextest, line tables only, one wasm check by @aiongg in https://github.com/storytold/pdfcraft/pull/4269
- CI: shared gate workflow; nightly fuzzing in its own workflow by @aiongg in https://github.com/storytold/pdfcraft/pull/4270
- test(automation): give sign_document a real digital ID and document in the hostile-arguments sweep by @aiongg in https://github.com/storytold/pdfcraft/pull/4277
- release: the git-sources gate moves into craft-common-actions (storytold/craft-common-actions#78) by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4292
- Translations: a missing string never fails; xtask ci prints the gaps by @aiongg in https://github.com/storytold/pdfcraft/pull/4302
- Assets: don't hash translation catalogs in ATTRIBUTION.toml by @aiongg in https://github.com/storytold/pdfcraft/pull/4284
- ci(sonar): stop cancelling main-branch runs so coverage is published by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4321
- fix(render): bound xref streams, JBIG2 referred-to counts, saved graphics states and /W2 runs by @aiongg in https://github.com/storytold/pdfcraft/pull/4350
- chore: resolve SonarCloud maintainability issues by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4356
- fix(deps): bump crypto-bigint to 0.7.6 (RUSTSEC-2026-0387) by @aiongg in https://github.com/storytold/pdfcraft/pull/4366
- Tests: UI tests wait for background work by time, not frame count (#4186) by @Jayesh-Prajapati9 in https://github.com/storytold/pdfcraft/pull/4242
- fix(demo): resolve SonarCloud web/css issues in showcase.html by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4402
- Integration batch 3: 47 contributor PRs (editing, forms, XFA, rendering) by @aiongg in https://github.com/storytold/pdfcraft/pull/4390
- fix(xfa): skip PDF fallback scripts while XFA layout is active by @PerchAnton in https://github.com/storytold/pdfcraft/pull/2648
- M6: dotted field names make parent fields (#2696) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2957
- fix(edit): batch styled paragraph fallback glyphs by @PerchAnton in https://github.com/storytold/pdfcraft/pull/3000
- fix(ui): the header, footer and watermark previews show the page under the marks (#2837) by @guillehr2 in https://github.com/storytold/pdfcraft/pull/3009
- M12: laying out a dynamic XFA form takes off the usage rights it voids by @EricKaden in https://github.com/storytold/pdfcraft/pull/3401
- fix(forms): write each /DR font as its own object, so Acrobat keeps typed text (#3441) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3488
- Save commits the open Edit Text boxes before writing the file (#3496) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/3546
- M6: util.scand reads dates as another viewer does by @EricKaden in https://github.com/storytold/pdfcraft/pull/3549
- Edit text: keep Tr, stroke, line width and gs set inside BT when rewriting a paragraph (#3508, #3509) by @cadelass in https://github.com/storytold/pdfcraft/pull/3551
- M12: a date typed by another of an XFA field's edit patterns is kept in its first by @EricKaden in https://github.com/storytold/pdfcraft/pull/3552
- M6: form buttons show the side panels (app.execMenuItem) by @EricKaden in https://github.com/storytold/pdfcraft/pull/3580
- Redaction: follow nested forms as deep as the readers do by @Hamza0101 in https://github.com/storytold/pdfcraft/pull/3670
- M6: values typed into Password fields are written to no file (#3926) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3943
- M6: a document script that throws no longer stops the form's other scripts (#3940) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3985
- fix: Issue #4018, form_fill warns when a value does not fit its field (#4018) by @Ridzzz0Alam in https://github.com/storytold/pdfcraft/pull/4053
- M4: a save prompt that opens in the background asks for the user's attention by @EricKaden in https://github.com/storytold/pdfcraft/pull/4155
- M2: a symbolic TrueType font reads its (3, 0) cmap before its (1, 0) one (#4156) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4157
- fix(ui): the added-text editor keeps the box's alignment by @RiceDee in https://github.com/storytold/pdfcraft/pull/4178
- M11: PDF Optimizer ▸ Clean Up stores LZW streams with Flate (optimize.flate-unencoded) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/4181
- fix(audit): covered_text reports the words under the cover, not the whole line by @mercuryVM in https://github.com/storytold/pdfcraft/pull/4198
- M7: edited text keeps the spaces typed, except at the edges of a stretched justified row (#4199, #3797) by @Jayesh-Prajapati9 in https://github.com/storytold/pdfcraft/pull/4217
- M7: paste added text boxes and images in the engine and through content_copy (#2636) by @lev-n in https://github.com/storytold/pdfcraft/pull/4230
- M7: a batch of content edits refreshes the added content and page marks by @lev-n in https://github.com/storytold/pdfcraft/pull/4258
- M7: added text takes character spacing from Format text by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/4266
- M12: XFA text is measured at its standard-14 font's own widths by @EricKaden in https://github.com/storytold/pdfcraft/pull/4287
- Check boxes and radio buttons draw their mark in the field's text colour by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/4295
- Omit minus sign when FormCalc Format() rounds to zero by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/4299
- M6: Field Properties ▸ Actions: Edit opens an existing script (#4006) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/4307
- M11: honor page UserUnit when measuring image resolution by @KyleKassen in https://github.com/storytold/pdfcraft/pull/4310
- M10: write DOCX cell widths from their grid columns by @KyleKassen in https://github.com/storytold/pdfcraft/pull/4311
- M7: a bold paragraph's stand-in font no longer turns earlier edits bold (#4280) by @Lcoding15 in https://github.com/storytold/pdfcraft/pull/4316
- M12: round XFA check buttons draw a round background and border by @EricKaden in https://github.com/storytold/pdfcraft/pull/4317
- M12: links in XFA rich text become clickable links by @EricKaden in https://github.com/storytold/pdfcraft/pull/4318
- M12: XFA borders and rectangles with rounded corners are drawn rounded by @EricKaden in https://github.com/storytold/pdfcraft/pull/4319
- M10: preserve table text from covered export slots by @KyleKassen in https://github.com/storytold/pdfcraft/pull/4329
- M8: redact labelled Italian international slash numbers by @KyleKassen in https://github.com/storytold/pdfcraft/pull/4330
- M10: apply soft-mask Decode intervals to image exports by @KyleKassen in https://github.com/storytold/pdfcraft/pull/4331
- M12: flowed XFA subforms are drawn with their border and fill by @EricKaden in https://github.com/storytold/pdfcraft/pull/4338
- M6: fields that don't scroll stop taking text when full by @EricKaden in https://github.com/storytold/pdfcraft/pull/4339
- M6: the date picker has a Today button (#4274) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4343
- M2: a DeviceN colour with twelve inks paints, and a colour that can't be evaluated no longer blanks the page (ISO 32000-2 §8.6.6.5) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4345
- M6: check boxes, radio buttons and push buttons without an appearance are drawn, and comb fields show their cells (ISO 32000-2 Table 192, 12.7.5) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4368
- M2: Invisible annotations of unknown types and popups don't paint their appearance on the page (ISO 32000-2 Table 167) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4371
- M2: a stand-in for a non-embedded font keeps its glyph shapes at wider /Widths advances (Arial,Bold no longer draws i and l as blocks) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4374
- M2: a non-embedded CIDFont's fallback request carries its descendant's font descriptor (ISO 32000-2 §9.7.4, §9.8) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4380
- fix(edit): Delete removes the selected paragraph or objects in Edit text by @meethere in https://github.com/storytold/pdfcraft/pull/4111
- Integration batch 4: 26 contributor PRs (comments, viewer, pages, printing), after #4390 by @aiongg in https://github.com/storytold/pdfcraft/pull/4391
- M5: sticky notes stay upright where they are placed on rotated pages (NoRotate, #2583) by @guillehr2 in https://github.com/storytold/pdfcraft/pull/3016
- feat(organize): Extract pages takes typed page ranges (#3593) by @Lombardi2003 in https://github.com/storytold/pdfcraft/pull/3750
- M5: the arrow keys move the selected comment by @ohagmann in https://github.com/storytold/pdfcraft/pull/3786
- Leave the page grid when the Crop tool is chosen by @eliets2 in https://github.com/storytold/pdfcraft/pull/3974
- fix(automation): guard MCP dispatch and bound line and file reads (#3924) by @jonathanwxh-cell in https://github.com/storytold/pdfcraft/pull/3997
- M12: type or pick an architect's 1:N drawing scale in the Measure panel, applied at once by @aalbertiarchitecte in https://github.com/storytold/pdfcraft/pull/4058
- i18n(fi): translate the 64 labels left in English after #2210 by @Janiz-zzz in https://github.com/storytold/pdfcraft/pull/4068
- feat(ui): the secured-document notice can be turned off for good (#4035) by @Lombardi2003 in https://github.com/storytold/pdfcraft/pull/4096
- fix(sign): judge a page's indirect /Annots array by the annotations it gains by @ffishman in https://github.com/storytold/pdfcraft/pull/4132
- fix(sign): let an LTV update declare the ESIC extension in the catalog by @ffishman in https://github.com/storytold/pdfcraft/pull/4133
- Flatten comments from the page's right-click menu and the Comments panel's menu by @ohagmann in https://github.com/storytold/pdfcraft/pull/4147
- M10: every paper size reaches the printer, from the dialog and doc_print (#3752) by @thesilvjurado in https://github.com/storytold/pdfcraft/pull/4161
- feat(ui): add 'Split document...' to page thumbnail context menus by @so-sai in https://github.com/storytold/pdfcraft/pull/4211
- M3: a link without a position keeps the reader's place (ISO 32000-2 §12.3.2.2) by @Lcoding15 in https://github.com/storytold/pdfcraft/pull/4303
- M10: preserve page artwork when printing annotations by @KyleKassen in https://github.com/storytold/pdfcraft/pull/4312
- test(ui): recovery idle tests make folders that never share a name by @EricKaden in https://github.com/storytold/pdfcraft/pull/4323
- M5: stamps without an appearance draw the stamp they name (ISO 32000-2 Table 184) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4349
- Reject open-ended page range on a document with no pages by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/4352
- M3: a fresh install follows the desktop's appearance (#1248) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2190
- M3: restore last view settings when reopening documents (#1767) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2195
- organize: split a combined field/widget so every copied page owns its widget by @midasmatterhorn in https://github.com/storytold/pdfcraft/pull/2289
- M10: a booklet decides two-sided itself, as Acrobat does (#2707) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2748
- cli: the argument bugs photocraft#7071 lists are live here too by @Hamza0101 in https://github.com/storytold/pdfcraft/pull/3849
- M3: resize and move the window again right after a resize or move (Wayland) by @bmh129 in https://github.com/storytold/pdfcraft/pull/3970
- Comments: the composer hides while its comment is scrolled away (#4021) by @mmmaarian03-crypto in https://github.com/storytold/pdfcraft/pull/4095
- M5: comments without an appearance draw their /Border dashes, Ink dashes and the caret's ¶ (ISO 32000-2 Tables 166, 168, 183) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4362
- Integration batch 5: 9 contributor PRs (OCR, attachments, documents, selection), after #4391 by @aiongg in https://github.com/storytold/pdfcraft/pull/4394
- M10: recognize a scanned page when Edit is turned on for it by @philip-tam in https://github.com/storytold/pdfcraft/pull/1609
- Attachments: attach a file and delete one (panel, edit, tools); duplicate names numbered as text by @regendorf-ux in https://github.com/storytold/pdfcraft/pull/1960
- M3: Document Properties shows a title and author stated only in XMP (#2373) by @magdale76 in https://github.com/storytold/pdfcraft/pull/2588
- M11: Optimize keeps a JPEG's colour transform (#1201) by @guillehr2 in https://github.com/storytold/pdfcraft/pull/3012
- fix(ui): the back arrows leave Edit as the Edit tab does by @guillehr2 in https://github.com/storytold/pdfcraft/pull/3056
- Select All takes the whole document's text while scrolling continuously (fixes #2639) by @SBaksa in https://github.com/storytold/pdfcraft/pull/3694
- Refuse an OCR batch whose inputs would write one output file by @eliets2 in https://github.com/storytold/pdfcraft/pull/3765
- fix: Issue #4020, Extract keeps the bookmarks of the pages it copies by @Ridzzz0Alam in https://github.com/storytold/pdfcraft/pull/4041
- OCR: a recognizer panic or a dead worker ends the run (#3919) by @mmmaarian03-crypto in https://github.com/storytold/pdfcraft/pull/4196
- fix(forms): a multiline field rejects a glyph wider than the field by @aiongg in https://github.com/storytold/pdfcraft/pull/4447
- fix(render): vendor hayro-postscript so a run of << in a CMap can't overflow the stack by @aiongg in https://github.com/storytold/pdfcraft/pull/4363
- Fixed broken link to nFPM installation site by @roopeshor in https://github.com/storytold/pdfcraft/pull/4372
- Redaction keeps images still drawn through a form without /Resources by @oracola91 in https://github.com/storytold/pdfcraft/pull/4413
- fix(optimize): a GoToR or GoToE /D no longer keeps a local named destination by @dotCooCoo in https://github.com/storytold/pdfcraft/pull/4445
- refactor(xtask): reduce cognitive complexity in parity and layers by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4406
- refactor(a11y): reduce cognitive complexity in autotag and alt by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4407
- refactor(engine): reduce cognitive complexity in camera_edges and word_count by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4408
- refactor(ui): split field-table divider input (Sonar S3776) by @FredApps in https://github.com/storytold/pdfcraft/pull/4419
- fix(ui): seven tools take the page zoom from the side the page's width is on in a turned view by @Lombardi2003 in https://github.com/storytold/pdfcraft/pull/4425
- M2: tiling pattern cells sit at their XStep/YStep multiples at every scale (ISO 32000-2 8.7.3.1) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4421
- fix(automation): roots-only mode refuses other shares and devices by name by @mercuryVM in https://github.com/storytold/pdfcraft/pull/4289
- M12: XFA check boxes sit where their margins, caption and alignment put them by @EricKaden in https://github.com/storytold/pdfcraft/pull/4300
- M5: line comments draw their leader lines and caption (ISO 32000-2 Table 178) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4354
- M3: a document opens at its /OpenAction destination, position and named destinations included (ISO 32000-2 Table 149, 12.3.2.4) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4376
- M4: Document Properties has a Custom tab for custom properties by @dotCooCoo in https://github.com/storytold/pdfcraft/pull/4387
- M3: a closed top-level bookmark opens closed (ISO 32000-2 Table 151 /Count) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4389
- fix(ui): header, footer and watermark previews step through the pages by @aiongg in https://github.com/storytold/pdfcraft/pull/4448
- Reject non-finite numbers in XFDF coordinate lists on import by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/4449
- refactor(xfa): explicit model imports (Sonar S2208) by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4403
- M2: Type 3 text in rendering mode 7 is not rendered and adds no clip (ISO 32000-2 9.3.6) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4430
- M2: a Separation /All colour paints every colourant, gray 1 − tint on screen (ISO 32000-2 8.6.6.4) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4439
- Remember the annotation tool pin across restarts (#4253) by @PerchAnton in https://github.com/storytold/pdfcraft/pull/4276
- M6: an editable combo box takes a typed value (ISO 32000-2 Table 233 Edit) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/4451
- chore: order the render integration-test modules (fmt) by @echelon in https://github.com/storytold/pdfcraft/pull/4486
- fix(ui): text typed into a new text box counts as unsaved work by @aiongg in https://github.com/storytold/pdfcraft/pull/4441
- Integration batch 6: 6 contributor PRs (All tools view, page pointer, comments, redaction, Properties, Home) by @aiongg in https://github.com/storytold/pdfcraft/pull/4566
- M3: All tools expands to a full, searchable view by @alehel in https://github.com/storytold/pdfcraft/pull/2460
- fix(ui): Document Properties layout, Space Audit tab, no page cursors under dialogs by @alehel in https://github.com/storytold/pdfcraft/pull/2556
- M3: the community card on Home can be closed for the rest of the run by @max1e6 in https://github.com/storytold/pdfcraft/pull/2617
- fix(ui): one page pointer per frame, so taps work and nothing over a page lets it through by @alehel in https://github.com/storytold/pdfcraft/pull/2685
- fix(comments): thread replies by their /IRT reference, count comments like Acrobat by @alehel in https://github.com/storytold/pdfcraft/pull/4061
- fix(redact,cos): cleared redaction marks leave nothing behind by @alehel in https://github.com/storytold/pdfcraft/pull/4226
- fix(xfa): require full save when stripping XFA packets by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4568
- fix(forms): align has_password_flag traversal depth with field enumeration by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4570
- fix(redact): remove AcroForm on Hidden::FormFields even when field count is zero by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/4571
- forms: clear typed XFA password field values from datasets on save (#3944) by @jonathanwxh-cell in https://github.com/storytold/pdfcraft/pull/4506
- fix(ui): the page ignores the pointer while a panel is being dragged by @aiongg in https://github.com/storytold/pdfcraft/pull/4581
- @Matoo125 made their first contribution in https://github.com/storytold/pdfcraft/pull/4212
- @zuujiscom made their first contribution in https://github.com/storytold/pdfcraft/pull/4137
- @piyushgoel2808 made their first contribution in https://github.com/storytold/pdfcraft/pull/4073
- @agent-reed made their first contribution in https://github.com/storytold/pdfcraft/pull/4066
- @pat26-dotcom made their first contribution in https://github.com/storytold/pdfcraft/pull/4130
- @aalbertiarchitecte made their first contribution in https://github.com/storytold/pdfcraft/pull/4012
- @vjeko2404 made their first contribution in https://github.com/storytold/pdfcraft/pull/4067
- @vioreltus made their first contribution in https://github.com/storytold/pdfcraft/pull/4016
- @cadelass made their first contribution in https://github.com/storytold/pdfcraft/pull/3551
- @RiceDee made their first contribution in https://github.com/storytold/pdfcraft/pull/4178
- @mercuryVM made their first contribution in https://github.com/storytold/pdfcraft/pull/4198
- @lev-n made their first contribution in https://github.com/storytold/pdfcraft/pull/4230
- @KyleKassen made their first contribution in https://github.com/storytold/pdfcraft/pull/4310
- @meethere made their first contribution in https://github.com/storytold/pdfcraft/pull/4111
- @thesilvjurado made their first contribution in https://github.com/storytold/pdfcraft/pull/4161
- @so-sai made their first contribution in https://github.com/storytold/pdfcraft/pull/4211
- @roopeshor made their first contribution in https://github.com/storytold/pdfcraft/pull/4372
- @dotCooCoo made their first contribution in https://github.com/storytold/pdfcraft/pull/4445
Full Changelog: https://github.com/storytold/pdfcraft/compare/v0.13.0...v0.14.0
PdfCraft v0.13.0
[!NOTE] FreeBSD aarch64 is dropped from this release. We had to cut releases, and we cannot build this target within the 5-hour CI limit for any of the Craft apps, so we are dropping it for now. This is a known blocker, flagged for a future fix in storytold/craft-common-actions#39. FreeBSD x86_64 and every other platform are included.
- M14: recover existing macOS PDF associations after open and save by @skylartaylor in https://github.com/storytold/pdfcraft/pull/3558
Full Changelog: https://github.com/storytold/pdfcraft/compare/v0.12.0...v0.13.0
PdfCraft v0.12.0
[!NOTE] FreeBSD aarch64 is dropped from this release. We had to cut releases, and we cannot build this target within the 5-hour CI limit for any of the Craft apps, so we are dropping it for now. This is a known blocker, flagged for a future fix in storytold/craft-common-actions#39. FreeBSD x86_64 and every other platform are included.
- M7: lay out the Edit panel as Acrobat's by @abc2cb in https://github.com/storytold/pdfcraft/pull/2245
- fix(engine): PNG export writes opaque pages as RGB at deflate level 3 (3–5× faster, same size) by @Piohrun in https://github.com/storytold/pdfcraft/pull/2425
- M3: the mode bar has no Read tab, as in Acrobat by @abc2cb in https://github.com/storytold/pdfcraft/pull/2240
- fix(render): read each object stream's index once (vendored hayro-syntax patch 22) by @Piohrun in https://github.com/storytold/pdfcraft/pull/2427
- M4: Organize pages remembers its page size, as Acrobat does by @abc2cb in https://github.com/storytold/pdfcraft/pull/2282
- M3: the Tools panel has no tab strip while docked alone by @abc2cb in https://github.com/storytold/pdfcraft/pull/2244
- M7: lay out Format text as Acrobat's panel by @abc2cb in https://github.com/storytold/pdfcraft/pull/2249
- M6: renaming a field renames it in the calculations that read it by @Piohrun in https://github.com/storytold/pdfcraft/pull/3550
- Use chrono instead of hand-rolled UTC conversion by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/3824
- M6: calculation order: read, check, fix and set the order fields calculate in by @Piohrun in https://github.com/storytold/pdfcraft/pull/3708
- security: enforce HTTPS on curl downloads (SonarCloud S6506) by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/3933
- ci: pin GitHub Actions to full commit SHA (SonarCloud S7637) by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/3932
- M6: Prepare a form ▸ Calculation order: a page to reorder, check and fix the order fields calculate in by @Piohrun in https://github.com/storytold/pdfcraft/pull/3733
- M6: Prepare a form ▸ Text field table: rows and columns of text fields as one edit by @Piohrun in https://github.com/storytold/pdfcraft/pull/3479
- M14: add Norwegian Bokmål interface and date language by @alehel in https://github.com/storytold/pdfcraft/pull/1836
- Integration batch: 218 PRs on main by @aiongg in https://github.com/storytold/pdfcraft/pull/3983
- Fill & Sign marks stay upright on rotated pages (#2392) by @AdrianTM in https://github.com/storytold/pdfcraft/pull/3781
- M5: drag a line's ends (and a polygon's corners) to change its length and angle by @ohagmann in https://github.com/storytold/pdfcraft/pull/3788
- Preferences: list the languages alphabetically by their own name by @nikolainyegaard in https://github.com/storytold/pdfcraft/pull/3819
- M14: complete Brazilian Portuguese catalog by @johnpetersa19 in https://github.com/storytold/pdfcraft/pull/3827
- M6: hovering a form field shows its tooltip (#3854) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3856
- M7: keep a word on its line when its spacing differs by less than a thousandth of an em by @komo1iddin in https://github.com/storytold/pdfcraft/pull/3861
- M7: open the paragraph editor without a fade-in by @komo1iddin in https://github.com/storytold/pdfcraft/pull/3862
- M7: keep an applied paragraph's look until its page is drawn again by @komo1iddin in https://github.com/storytold/pdfcraft/pull/3863
- M4: a new bookmark goes to where the reader is (#3865) by @AdrianTM in https://github.com/storytold/pdfcraft/pull/3875
- M7: keep a paragraph open with its typing when its edit fails by @komo1iddin in https://github.com/storytold/pdfcraft/pull/3878
- M7: an added picture resized by a corner shows only at its new size by @komo1iddin in https://github.com/storytold/pdfcraft/pull/3879
- Give the print preview's grayscale tag a bit of its own by @eliets2 in https://github.com/storytold/pdfcraft/pull/3903
- M14: the Preferences OK button stays in reach below the scrolling settings (#3557) by @AdrianTM in https://github.com/storytold/pdfcraft/pull/3906
- M14: Italian catalog: the 8-character digital ID password message by @kcobelli-pixel in https://github.com/storytold/pdfcraft/pull/3907
- M9: closing a half of a side-by-side comparison keeps the app running (#3915) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3931
- M7: a text editing session for one paragraph by @komo1iddin in https://github.com/storytold/pdfcraft/pull/3942
- M14: JPEG and TIFF export refuse a raster of the wrong length instead of panicking by @Piohrun in https://github.com/storytold/pdfcraft/pull/3946
- Reject rounded page rasters beyond the pixel budget by @narain1 in https://github.com/storytold/pdfcraft/pull/3948
- M7: opening a paragraph leaves the page as it is until it changes by @komo1iddin in https://github.com/storytold/pdfcraft/pull/3952
- M5: a Replace text comment is named Replace text, not Strikethrough (#3947) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3953
- perf(render): read PDFCRAFT_TEXT_DEBUG once instead of per glyph by @narain1 in https://github.com/storytold/pdfcraft/pull/3955
- perf(render): look CFF glyph names up in a map (vendored hayro-interpret patch 44) by @narain1 in https://github.com/storytold/pdfcraft/pull/3958
- fix(engine): guard undo and redo refresh and roll back on failure (#3925) by @jonathanwxh-cell in https://github.com/storytold/pdfcraft/pull/3961
- M5: a stamp grows and shrinks with its handles before release (#3518) by @jay-tau in https://github.com/storytold/pdfcraft/pull/3520
- Render: radial luminosity fades have regression coverage by @KnottyDyes in https://github.com/storytold/pdfcraft/pull/3540
- M12: XFA labels and buttons without a size grow to their content by @EricKaden in https://github.com/storytold/pdfcraft/pull/3542
- M9: read .p7b/.p7c certificate bundles for trust import by @ffishman in https://github.com/storytold/pdfcraft/pull/3561
- fix: read the last array of a surplus-operand TJ, not the first (#3569) by @MichaelMuClaude in https://github.com/storytold/pdfcraft/pull/3571
- M12: showing an XFA subform leaves its unnamed hidden objects hidden by @EricKaden in https://github.com/storytold/pdfcraft/pull/3582
- Forms: Highlight fields marks only the fields that can be filled by @EricKaden in https://github.com/storytold/pdfcraft/pull/3584
- M7: paint a new background over older ones (#3591) by @hazeliscoding in https://github.com/storytold/pdfcraft/pull/3595
- fix(print): restore previous paper size after leaving Label mode (#3564) by @jpeskov in https://github.com/storytold/pdfcraft/pull/3596
- M14: find Apple's Devanagari faces in the folders current macOS uses by @amoisttowe1 in https://github.com/storytold/pdfcraft/pull/3598
- M14: Spanish catalog covers the bundled key union by @feraremag2680 in https://github.com/storytold/pdfcraft/pull/3603
- Page-tree walks in annot, forms and organize skip repeated children by @oracola91 in https://github.com/storytold/pdfcraft/pull/3608
- The image scan skips a path segment before any m instead of panicking (#3581) by @rahul05ranjan in https://github.com/storytold/pdfcraft/pull/3621
- Fix #3507: preserve content boundaries when merging image fragments by @ahmadmuj in https://github.com/storytold/pdfcraft/pull/3622
- Decode JavaScript hex and control escapes in AF script strings by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/3623
- fix(forms): preserve comments across content streams by @ahmadmuj in https://github.com/storytold/pdfcraft/pull/3625
- Render: a doubled sign is one number, so a cm with it still has a matrix by @Hamza0101 in https://github.com/storytold/pdfcraft/pull/3630
- Control channel: wait after a failed accept instead of retrying at once by @oracola91 in https://github.com/storytold/pdfcraft/pull/3631
- fix(print): retain existing appearances without Subtype by @ahmadmuj in https://github.com/storytold/pdfcraft/pull/3633
- Fix named properties in forms without resources by @ahmadmuj in https://github.com/storytold/pdfcraft/pull/3637
- Pair /ActualText correctly past 256 levels of marked content by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/3639
- fix(render): draw missing spacing glyphs in Japanese CID substitutes as spaces (#3601) by @jpeskov in https://github.com/storytold/pdfcraft/pull/3643
- Keep filtered inline images whole when their data contains EI by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/3652
- fix(xtask): wait for Chrome child processes to settle PDF after launcher exits (#3103) by @jonathanwxh-cell in https://github.com/storytold/pdfcraft/pull/3654
- Accept a delimiter after EI when ending an inline image by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/3668
- M8: applying redactions drops structure-tree references to the comments and fields it removes (#2874) by @Jayesh-Prajapati9 in https://github.com/storytold/pdfcraft/pull/3674
- M2: text extraction keeps doubled letters in text condensed to 20 Tz and below (#2457) by @Jayesh-Prajapati9 in https://github.com/storytold/pdfcraft/pull/3681
- fix(a11y): resolve /MarkInfo /Marked when it is an indirect reference (#3671) by @Hamza0101 in https://github.com/storytold/pdfcraft/pull/3686
- M3: let Escape close an open menu before it clears the selection (#3535) by @hazeliscoding in https://github.com/storytold/pdfcraft/pull/3690
- Edit text: keep a line together across subsets of the same font (#3661) by @amanmprojects in https://github.com/storytold/pdfcraft/pull/3697
- M3: fix multiline comment hover bounds and paint order by @PerchAnton in https://github.com/storytold/pdfcraft/pull/3703
- Parse a bare trailing "a" as AM in AcroForm date/time parsing by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/3714
- fix(sign): embed the issuers of macOS Keychain identities by @ffishman in https://github.com/storytold/pdfcraft/pull/3716
- Stop Std14::recognise mapping sans-serif font names to Times by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/3717
- Return empty WordNum result when cents rounding carries to 1e12 by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/3718
- Keep zero annotation flags through XFDF export/import by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/3719
- fix(render): hit-test selection against the glyph quad, not its bounding box (#3693) by @MatrixMagician in https://github.com/storytold/pdfcraft/pull/3720
- M12: accept Identity CJK Unicode mappings in accessibility checks (#3673) by @amanmprojects in https://github.com/storytold/pdfcraft/pull/3721
- Redact: count shared outline items once so the walk ends by @eliets2 in https://github.com/storytold/pdfcraft/pull/3723
- Join /Contents pieces with a space in measure snap by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/3725
- Refuse redaction marks with no readable area instead of skipping them by @eliets2 in https://github.com/storytold/pdfcraft/pull/3728
- M4: resolve indirect initial-view boolean preferences by @MMexicann in https://github.com/storytold/pdfcraft/pull/3735
- fix(comments): the eraser's size sets how wide it rubs (#3747) by @Lombardi2003 in https://github.com/storytold/pdfcraft/pull/3749
- feat(edit): Header & Footer can be drawn in Times or Courier (#3754) by @Lombardi2003 in https://github.com/storytold/pdfcraft/pull/3756
- Print: keep the picked printer for the next print (#3537) by @AdrianTM in https://github.com/storytold/pdfcraft/pull/3764
- fix(organize): imports find the objects they added when new numbers fill gaps by @petarlaf in https://github.com/storytold/pdfcraft/pull/3794
- fix(xfdf): a field name full of periods no longer overflows the stack on export by @petarlaf in https://github.com/storytold/pdfcraft/pull/3814
- fix(annot): a comment listed many times gets one display appearance by @petarlaf in https://github.com/storytold/pdfcraft/pull/3816
- Add thumbnail size controls to the Pages inspector by @robertobulltech in https://github.com/storytold/pdfcraft/pull/3828
- fix(ui): the Read mode command leaves Edit as the Edit tab does by @guillehr2 in https://github.com/storytold/pdfcraft/pull/3014
- fix(render): draw device colour in the resources' /DefaultGray, /DefaultRGB and /DefaultCMYK (vendored hayro-interpret patch 38) by @guillehr2 in https://github.com/storytold/pdfcraft/pull/3018
- fix(ui): Fill & Sign font size resizes the selected text (#1274) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3039
- fix(save): preserve destination extended attributes on macOS by @PerchAnton in https://github.com/storytold/pdfcraft/pull/3042
- M3: layer_set shows or hides a layer, and page_render draws with the document's view settings (#2986) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3043
- M7: the paragraph editor draws on its page only (#3061) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3070
- docs(roadmap): record #2662, the audit's one-word cover by @Mawfyy in https://github.com/storytold/pdfcraft/pull/3075
- test: the image-drag pixel test waits for the page raster (flaky on windows-latest) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3077
- feat(viewer): add optional gapless continuous page display by @DjPeepjay in https://github.com/storytold/pdfcraft/pull/3101
- fix(render): emit clip-only text (7 Tr) to devices for text extraction (#3109) by @jonathanwxh-cell in https://github.com/storytold/pdfcraft/pull/3116
- fix(render): apply the JP2 palette of a JPX image with no /ColorSpace (#3179) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3184
- Prevent overflow when rotating added images through automation by @PerchAnton in https://github.com/storytold/pdfcraft/pull/3187
- fix(forms): an XFA form whose config forbids dynamic rendering is static (#3180) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3192
- Vendor and patch hayro-cmap for tolerant CMap parsing by @charan-rathore in https://github.com/storytold/pdfcraft/pull/3195
- M8: phone pattern finds slashed and labelled unseparated numbers (#3205) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3237
- M3: extract text from glyph names outside the Adobe Glyph List (#3169, #3170) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3239
- Draw a note without an appearance as a fixed-size icon at the corner of its Rect (#3175) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/3245
- Shading patterns use the stroke or fill alpha current at paint time (#3176) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/3246
- fix(content): accept inline image EI without preceding whitespace (#3108) by @Ozt-y in https://github.com/storytold/pdfcraft/pull/3259
- Lay out vertical (Identity-V) text as columns in the edit layer by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/3289
- Renderer: sample a mesh shading over its triangles alone, not the whole path by @ohagmann in https://github.com/storytold/pdfcraft/pull/3296
- Keep text rows in other layers, gs states or Tz out of a paragraph by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/3310
- fix(organize): prune named destinations without recursive calls by @PerchAnton in https://github.com/storytold/pdfcraft/pull/3311
- M6: Optimize AcroForm JavaScript snapshots and diffs by @djmushin in https://github.com/storytold/pdfcraft/pull/3318
- M6: Treat AcroForm /MaxLen 0 as unlimited by @djmushin in https://github.com/storytold/pdfcraft/pull/3323
- Rail: scroll the panel buttons above the page navigation in short windows (#3282) by @majidninja in https://github.com/storytold/pdfcraft/pull/3325
- Render: a five-point polyline is no longer painted as its bounding box by @Hamza0101 in https://github.com/storytold/pdfcraft/pull/3327
- M2: preserve word spaces around TOC leaders (#3086) by @robertobulltech in https://github.com/storytold/pdfcraft/pull/3348
- fix(a11y): join and splice page content streams with cross-stream rules (#3217) by @jonathanwxh-cell in https://github.com/storytold/pdfcraft/pull/3357
- fix(windows): present Direct3D 12 through a composition visual, so resizing doesn't stretch (#2738) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3376
- M12: an XFA script that fails partway keeps what it changed before the error by @EricKaden in https://github.com/storytold/pdfcraft/pull/3408
- Honor single-page redaction selections by @earlvanze in https://github.com/storytold/pdfcraft/pull/3411
- M5: centre selected inspector comments without changing zoom (#3418) by @LabDennis in https://github.com/storytold/pdfcraft/pull/3423
- fix(render): use unfiltered inline image byte length before EI heuristic (#3107) by @jonathanwxh-cell in https://github.com/storytold/pdfcraft/pull/3438
- fix(engine): a reload keeps reading colours and hidden comments (#3443) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3452
- fix(edit): keep a superscript footnote marker in its paragraph's row (#3252) by @MichaelMuClaude in https://github.com/storytold/pdfcraft/pull/3471
- fix(forms): draw fields the file leaves to the viewer, for display only (#3470) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3475
- M2: Type 0 fonts with /ToUnicode /Identity-H read their codes as Unicode by @Lcoding15 in https://github.com/storytold/pdfcraft/pull/3497
- i18n: add Central Kurdish (Sorani) as an interface language by @Nyanpasuwu in https://github.com/storytold/pdfcraft/pull/3498
- M12: XFA text honors its horizontal font scale by @EricKaden in https://github.com/storytold/pdfcraft/pull/3515
- M12: a space at the end of a line doesn't count when fitting XFA text by @EricKaden in https://github.com/storytold/pdfcraft/pull/3521
- M3: snapshot tests of every side panel by @Dubblbindong in https://github.com/storytold/pdfcraft/pull/3525
- M6: a push button's caption uses the font, size and color of its /DA by @EricKaden in https://github.com/storytold/pdfcraft/pull/3543
- M7: let a list marker open an item and a hanging indent continue it (#2564) by @Hathor875 in https://github.com/storytold/pdfcraft/pull/2612
- fix(xfa): run click scripts for every repeated print button by @PerchAnton in https://github.com/storytold/pdfcraft/pull/2619
- feat(forms): nudge the selected field with the arrow keys in Prepare a form (#2608) by @fanyzp in https://github.com/storytold/pdfcraft/pull/2621
- Print ▸ Properties…: the driver's options in the UI language by @bulgariamitko in https://github.com/storytold/pdfcraft/pull/2647
- fix(comments): Add a text box takes a drag that sizes the box by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2706
- i18n: add Lao (lo) translation support by @bounkirdni-2025 in https://github.com/storytold/pdfcraft/pull/2714
- fix(automation): tools on a file the viewer reads fewer pages of answer instead of panicking by @cortenburg28-arch in https://github.com/storytold/pdfcraft/pull/2715
- fix(edit): keep a one-row centred title centred when it grows (#2581) by @Hathor875 in https://github.com/storytold/pdfcraft/pull/2723
- fix(print): disable Print on documents whose security forbids printing by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2724
- Layers panel: Reset to Initial Visibility by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2731
- M7: a paragraph number keeps naming the paragraph text_paragraphs listed (#2516) by @hcchung1 in https://github.com/storytold/pdfcraft/pull/2756
- M14: complete and review the Czech catalog by @qwerin in https://github.com/storytold/pdfcraft/pull/2758
- M5: reduce Comments panel scans on large reviews (#2669 item 5) by @ahmadmuj in https://github.com/storytold/pdfcraft/pull/2805
- fix(cli): info, text, render and audit take the owner password of R2–R4 files by @enesoglu in https://github.com/storytold/pdfcraft/pull/2825
- M7: Header & footer: shrink the page content out of their way (#2140) by @switch87 in https://github.com/storytold/pdfcraft/pull/2832
- M6: detected form fields get no border or fill by @boneyland in https://github.com/storytold/pdfcraft/pull/2840
- fix(print): offer the US #10 envelope as a paper size (#2734) by @cortenburg28-arch in https://github.com/storytold/pdfcraft/pull/2851
- Redaction audit: an opaque filled Square annotation over text is a cover by @midasmatterhorn in https://github.com/storytold/pdfcraft/pull/2854
- Treat CRLF as a single line break in fonts::wrap by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/2859
- fix(ui): Korean (Hangul) file names and tab titles draw as boxes by @brian-moon in https://github.com/storytold/pdfcraft/pull/2872
- M3: the "Save changes?" prompt opens on Save and moves between buttons by keyboard by @Harrison-Booth in https://github.com/storytold/pdfcraft/pull/2890
- M9: rewriting a certified form's XFA data is a form fill (#2759) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2897
- Forms: measure a field's own simple font, not Helvetica, when laying out its text by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2900
- fix(render): draw comma-below letters in non-embedded standard fonts … by @TiagoCK in https://github.com/storytold/pdfcraft/pull/2914
- Fix/cli option value errors by @Bode512 in https://github.com/storytold/pdfcraft/pull/2935
- fix(ui): keep a closed right panel closed when a PDF asks to open on its outline (#2884) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/2945
- M2: a post table version with swapped halves doesn't make a font unusable (#2946) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2949
- Keep seconds in FormCalc Time2Num/IsoTime2Num for ISO 8601 times by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/2963
- fix(render): blend modes over an empty part of the page keep their colour (#2970) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2972
- fix(render): knockout transparency groups knock out (#2971) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2974
- fix(render): a stencil mask is drawn at the fill opacity once (#2975) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2977
- fix(render): a visibility expression decides what an OCMD shows (#2986) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2987
- fix(sign): explain 0x8009001D and 0xC0000225 when a store key's provider fails by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2989
- Render month and weekday names in XFA date patterns by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/2993
- M10: Export to Word keeps the page background colour (#2992) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2994
- Zero-pad required integer digits in FormCalc Format() by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/3004
- fix(cos): write whole reals past the 32-bit integer range as reals by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3006
- fix(ui): the password prompt takes typing on Linux again by @guillehr2 in https://github.com/storytold/pdfcraft/pull/3007
- fix(edit): a paragraph's width handle rewraps it from its whole handle, not just the inner half (#2276) by @guillehr2 in https://github.com/storytold/pdfcraft/pull/3008
- fix(ui): the mode tabs keep the hand over a page scrolled under them by @guillehr2 in https://github.com/storytold/pdfcraft/pull/3010
- M12: the page side of a measuring scale takes a unit, so 1:50 is 1 mm = 50 mm (#2752) by @guillehr2 in https://github.com/storytold/pdfcraft/pull/3011
- fix(forms): renaming a nested field checks the full name it would take by @guillehr2 in https://github.com/storytold/pdfcraft/pull/3013
- fix(comments): the note editor takes the keyboard once, so V and H pick tools again by @guillehr2 in https://github.com/storytold/pdfcraft/pull/3015
- fix(render): draw each ICC profile through itself when two have the same stream dictionary (vendored hayro-interpret patch 40) by @guillehr2 in https://github.com/storytold/pdfcraft/pull/3020
- fix(ui): on-page text editors leave the mode tabs their pointer when scrolled under them by @guillehr2 in https://github.com/storytold/pdfcraft/pull/3022
- fix(render): mesh triangles that share an edge leave no seam by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3035
- Ita Translate by @Nai-ITA in https://github.com/storytold/pdfcraft/pull/1523
- Hebrew file names: draw them with an installed Hebrew face when the build has none by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1624
- XFA: decode BMP and TIFF pictures by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1648
- Open: opening an already-open document focuses its tab (#1620) by @edurbs in https://github.com/storytold/pdfcraft/pull/1663
- fix(sign): render Unicode characters in visible signatures using bundled Inter font by @PINYOPATTANAWASANPORN in https://github.com/storytold/pdfcraft/pull/1679
- docs: keep one copy of the catalog paragraph in localization.md by @feraremag2680 in https://github.com/storytold/pdfcraft/pull/1778
- M10: keep dotted-leader contents entries together by @webdevtodayjason in https://github.com/storytold/pdfcraft/pull/1829
- M11: remove PDF/A or PDF/X identification (optimize.remove-standards-id) by @Erry91 in https://github.com/storytold/pdfcraft/pull/1830
- fix(cos): check object-stream member numbers and offsets (#1815) by @TiagoCK in https://github.com/storytold/pdfcraft/pull/1850
- M9: read DocMDP permissions from the signed revision (#1788) by @Ridzzz0Alam in https://github.com/storytold/pdfcraft/pull/1962
- i18n: add Indonesian, Vietnamese, Hindi and Korean interfaces by @pechnikov2026-star in https://github.com/storytold/pdfcraft/pull/1976
- Edit images: rotate an image by any angle with a knob (#1940) by @vangel76 in https://github.com/storytold/pdfcraft/pull/1989
- fix(ui): respect reading background while pages load by @sampaiodias in https://github.com/storytold/pdfcraft/pull/2060
- M3: full screen shows one fitted page at a time, as Acrobat's Full Screen Mode (#1459) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2070
- cos: property tests for save fidelity (part of #1187) by @amoisttowe1 in https://github.com/storytold/pdfcraft/pull/2073
- i18n: add Albanian (sq) interface language by @Saimirbaci in https://github.com/storytold/pdfcraft/pull/2079
- i18n: add Thai (th) interface language by @mixlnwuu in https://github.com/storytold/pdfcraft/pull/2141
- fix(ui): a second file dialog waits for the open one instead of being refused by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2154
- fix(docs): correct spelling of "Formatting" in comments by @arpan-star in https://github.com/storytold/pdfcraft/pull/2172
- Print: remember selected paper size across restarts (fixes #2156) by @srt8hellcat2-ui in https://github.com/storytold/pdfcraft/pull/2173
- Add Finnish interface and date language by @Janiz-zzz in https://github.com/storytold/pdfcraft/pull/2210
- fix(cos): find objects a broken cross-reference table leaves out by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2220
- M14: add Catalan interface and date localization by @guillemvela in https://github.com/storytold/pdfcraft/pull/2227
- fix(forms): Tab and Space reach check boxes and radio buttons, and a click focuses them by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2235
- Preferences: field highlights on by default, toggle in Appearance (#2273) by @vangel76 in https://github.com/storytold/pdfcraft/pull/2279
- Draw the widget border inside /Tx BMC so Acrobat keeps it on focus changes (#1613) by @earlvanze in https://github.com/storytold/pdfcraft/pull/2280
- Keep Auto font size in the field properties Appearance tab by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/2294
- fix(optimize): reject hostile image dimensions safely by @earlvanze in https://github.com/storytold/pdfcraft/pull/2321
- crypt: authenticate against encryption numbers qpdf wrote (plus one hand-derived vector) by @amoisttowe1 in https://github.com/storytold/pdfcraft/pull/2359
- Issue #2365: a rebuilt file keeps the /Info and /ID of its cross-reference stream by @wstock in https://github.com/storytold/pdfcraft/pull/2397
- Issue #2366: a trailer whose /Prev is a reference still reaches the earlier sections by @wstock in https://github.com/storytold/pdfcraft/pull/2400
- M14: Polish says what a signature says, and the rest of the interface by @marcintrojnacki in https://github.com/storytold/pdfcraft/pull/2452
- M5: year-first slash dates (yyyy/mm/dd, yyyy/m/d) for Fill & Sign and headers by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2454
- macOS: bring the window forward when a file is opened in the running app (fixes #1928) by @manchitmr in https://github.com/storytold/pdfcraft/pull/2461
- M7: show a shaped run in one text object instead of one per glyph by @komo1iddin in https://github.com/storytold/pdfcraft/pull/2481
- M7: drop the fallback fonts a text edit leaves unused by @komo1iddin in https://github.com/storytold/pdfcraft/pull/2487
- Ctrl+V pastes a picture from the system clipboard onto the page by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2506
- fix(sign): fill typed signature outlines with non-zero winding (#1786) by @jonathanwxh-cell in https://github.com/storytold/pdfcraft/pull/2513
- docs(claude): check for existing issues and PRs before starting a fix by @alehel in https://github.com/storytold/pdfcraft/pull/2521
- Signatures: signed attributes must carry the message digest and the data content type by @oracola91 in https://github.com/storytold/pdfcraft/pull/2559
- Signatures: the message bar shows a problem before "Certified by" by @oracola91 in https://github.com/storytold/pdfcraft/pull/2568
- M10: Two-sided starts at Printer default, so the printer's own duplex applies (#2422) by @magdale76 in https://github.com/storytold/pdfcraft/pull/2584
- fix(combine): let the cards zoom to 500% (#2531) by @Hathor875 in https://github.com/storytold/pdfcraft/pull/2603
- M12: Compare panel filters text changes and visual differences (gap 21) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2607
- fix(edit): draw the Cyrillic the Japanese faces lack with the bundled Inter face (#2593) by @fanyzp in https://github.com/storytold/pdfcraft/pull/2609
- fix(xfa): enforce maxLength on rich-text fields by @PerchAnton in https://github.com/storytold/pdfcraft/pull/2615
- fix(xfa): reflow growable multiline fields after filling by @PerchAnton in https://github.com/storytold/pdfcraft/pull/2624
- Wake idle windows for pending recovery snapshots (#2663) by @FredApps in https://github.com/storytold/pdfcraft/pull/2711
- fix(ui): show the physical page position under a labelled page box (#2834) by @cortenburg28-arch in https://github.com/storytold/pdfcraft/pull/2857
- M14: complete the French interface catalog (267 entries) by @Atalantis in https://github.com/storytold/pdfcraft/pull/1594
- Preferences: always use my default zoom and page layout by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1749
- README: the app icon above the title by @bflatastic in https://github.com/storytold/pdfcraft/pull/4051
- fix: add generic font-family fallbacks (SonarCloud css:S4649) by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/3934
- Build each crate's integration tests as one binary by @aiongg in https://github.com/storytold/pdfcraft/pull/4087
- fix(cos, sign): close encryption and signature-validation gaps from a security scan by @aiongg in https://github.com/storytold/pdfcraft/pull/4097
- fix(engine, automation, js, platform): enforce copy, print and removal limits and check code compiled from strings by @aiongg in https://github.com/storytold/pdfcraft/pull/4100
- fix(xfdf, create, optimize): keep imported comments off form fields, draw imported redaction marks, neutralise CSV formulas and bound two parsers by @aiongg in https://github.com/storytold/pdfcraft/pull/4101
- fix(redact): remove hidden information completely or refuse, and bound its scan by @aiongg in https://github.com/storytold/pdfcraft/pull/4106
- fix(a11y, fonts, export, optimize): bound the work that repeated page, font and export structures multiply by @aiongg in https://github.com/storytold/pdfcraft/pull/4123
- fix(redact): redact what the page draws, check every input stream, and bound redaction's work by @aiongg in https://github.com/storytold/pdfcraft/pull/4107
- @AdrianTM made their first contribution in https://github.com/storytold/pdfcraft/pull/3781
- @ohagmann made their first contribution in https://github.com/storytold/pdfcraft/pull/3788
- @nikolainyegaard made their first contribution in https://github.com/storytold/pdfcraft/pull/3819
- @johnpetersa19 made their first contribution in https://github.com/storytold/pdfcraft/pull/3827
- @eliets2 made their first contribution in https://github.com/storytold/pdfcraft/pull/3903
- @narain1 made their first contribution in https://github.com/storytold/pdfcraft/pull/3948
- @ffishman made their first contribution in https://github.com/storytold/pdfcraft/pull/3561
- @MichaelMuClaude made their first contribution in https://github.com/storytold/pdfcraft/pull/3571
- @hazeliscoding made their first contribution in https://github.com/storytold/pdfcraft/pull/3595
- @jpeskov made their first contribution in https://github.com/storytold/pdfcraft/pull/3596
- @rahul05ranjan made their first contribution in https://github.com/storytold/pdfcraft/pull/3621
- @Jayesh-Prajapati9 made their first contribution in https://github.com/storytold/pdfcraft/pull/3674
- @amanmprojects made their first contribution in https://github.com/storytold/pdfcraft/pull/3697
- @MatrixMagician made their first contribution in https://github.com/storytold/pdfcraft/pull/3720
- @Lombardi2003 made their first contribution in https://github.com/storytold/pdfcraft/pull/3749
- @petarlaf made their first contribution in https://github.com/storytold/pdfcraft/pull/3794
- @robertobulltech made their first contribution in https://github.com/storytold/pdfcraft/pull/3828
- @DjPeepjay made their first contribution in https://github.com/storytold/pdfcraft/pull/3101
- @Ozt-y made their first contribution in https://github.com/storytold/pdfcraft/pull/3259
- @djmushin made their first contribution in https://github.com/storytold/pdfcraft/pull/3318
- @majidninja made their first contribution in https://github.com/storytold/pdfcraft/pull/3325
- @Lcoding15 made their first contribution in https://github.com/storytold/pdfcraft/pull/3497
- @Nyanpasuwu made their first contribution in https://github.com/storytold/pdfcraft/pull/3498
- @Dubblbindong made their first contribution in https://github.com/storytold/pdfcraft/pull/3525
- @fanyzp made their first contribution in https://github.com/storytold/pdfcraft/pull/2621
- @bounkirdni-2025 made their first contribution in https://github.com/storytold/pdfcraft/pull/2714
- @qwerin made their first contribution in https://github.com/storytold/pdfcraft/pull/2758
- @boneyland made their first contribution in https://github.com/storytold/pdfcraft/pull/2840
- @brian-moon made their first contribution in https://github.com/storytold/pdfcraft/pull/2872
- @Harrison-Booth made their first contribution in https://github.com/storytold/pdfcraft/pull/2890
- @TiagoCK made their first contribution in https://github.com/storytold/pdfcraft/pull/2914
- @Bode512 made their first contribution in https://github.com/storytold/pdfcraft/pull/2935
- @Nai-ITA made their first contribution in https://github.com/storytold/pdfcraft/pull/1523
- @PINYOPATTANAWASANPORN made their first contribution in https://github.com/storytold/pdfcraft/pull/1679
- @Saimirbaci made their first contribution in https://github.com/storytold/pdfcraft/pull/2079
- @mixlnwuu made their first contribution in https://github.com/storytold/pdfcraft/pull/2141
- @arpan-star made their first contribution in https://github.com/storytold/pdfcraft/pull/2172
- @Janiz-zzz made their first contribution in https://github.com/storytold/pdfcraft/pull/2210
- @guillemvela made their first contribution in https://github.com/storytold/pdfcraft/pull/2227
- @marcintrojnacki made their first contribution in https://github.com/storytold/pdfcraft/pull/2452
- @Atalantis made their first contribution in https://github.com/storytold/pdfcraft/pull/1594
Full Changelog: https://github.com/storytold/pdfcraft/compare/v0.11.0...v0.12.0
PdfCraft v0.11.0
- Skip CodeRabbit reviews on Dependabot PRs by @echelon in https://github.com/storytold/pdfcraft/pull/3692
- fix(redact): evaluate OCMD visibility during sanitization by @skylartaylor in https://github.com/storytold/pdfcraft/pull/3522
- ci: switch to shared nix workflow from craft-common-actions by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/2753
- Release: PdfCraft v0.11.0 by @echelon in https://github.com/storytold/pdfcraft/pull/3893
Full Changelog: https://github.com/storytold/pdfcraft/compare/v0.10.1...v0.11.0
PdfCraft v0.10.1
[!NOTE] No FreeBSD aarch64 build in this release. We are having trouble building this architecture within the 5-hour CI timeout across all Craft apps, so we are releasing without it to unblock builds. FreeBSD x86_64 and every other platform are included. FreeBSD aarch64 builds will return once the build fits in CI.
- Tests: make timing-dependent render and UI tests deterministic by @guillehr2 in https://github.com/storytold/pdfcraft/pull/2812
- Clear replacement text by @not-a-feature in https://github.com/storytold/pdfcraft/pull/1350
- Prevent oversized GPU textures after page replacement (#3149) by @PerchAnton in https://github.com/storytold/pdfcraft/pull/3182
- i18n: Turkish section titles and in-sentence labels keep İ and ı by @ogzhnklvz in https://github.com/storytold/pdfcraft/pull/3114
- fix(engine): printing keeps layers hidden in the Layers panel hidden (#3046) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3050
- fix(ocr): the text layer restores the rendering mode it sets (#3029) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3033
- Control channel: don't lose the refusal reply to a TCP reset (fixes deadline test flake) by @skylartaylor in https://github.com/storytold/pdfcraft/pull/3165
- fix(ui): the Hand tool moves the page with the pointer by @guillehr2 in https://github.com/storytold/pdfcraft/pull/3017
- fix(i18n): the web build's Auto language follows the browser (#2954) by @kgemici in https://github.com/storytold/pdfcraft/pull/2998
- Fix overflow panic for i64::MIN index in content_update/delete by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/2979
- Apply JPEG EXIF orientation when creating PDFs from images by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/2951
- M6: a box drawn with points along its sides is detected as a box (#2942) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2947
- Extract RTL lines with numbers and punctuation in logical order by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/2736
- M8: redaction removes the replies of the annotations it removes (#2659) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2697
- Edit text: a loaded font is applied to the paragraph being edited by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2599
- Comments: an attachment comment's menu saves or opens its file by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2585
- M7: keep the text blocks cache after the document is edited by @komo1iddin in https://github.com/storytold/pdfcraft/pull/2504
- M7: fold repeated group moves of a cropped image into one clip cm by @komo1iddin in https://github.com/storytold/pdfcraft/pull/2476
- fix(engine): a new or recovered document stays unsaved through undo by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2346
- M8: measure fonts without /Widths with their embedded program (#2130) by @Ridzzz0Alam in https://github.com/storytold/pdfcraft/pull/2232
- Issue #2367: an object stream whose entry cannot place it is found by its header by @wstock in https://github.com/storytold/pdfcraft/pull/2398
- Save As to another file writes a clean copy without earlier revisions by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2174
- M4: reverse page order (organize.reverse-pages) by @Erry91 in https://github.com/storytold/pdfcraft/pull/1720
- M6: detect a row of comb boxes as one comb text field by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2111
- Redact email addresses whose local part starts with punctuation by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/2948
- M7: never encode typed text with CID 0 (#3223) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3235
- M5: flattening comments leaves 3D, multimedia and print-production annotations (#3087) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3089
- Keep a subscript or superscript in its line when extracting text (#3174) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/3244
- Find credit card numbers followed by an expiry, year or CVV by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/2969
- fix(i18n): zh-hant catalog uses Taiwan vocabulary consistently by @hms5232 in https://github.com/storytold/pdfcraft/pull/2856
- M10: keep the OCR scan fixture at its original page size by @IanHollow in https://github.com/storytold/pdfcraft/pull/2399
- Fix GPU startup requests exceeding adapter limits by @Bortlesboat in https://github.com/storytold/pdfcraft/pull/2433
- M7: the Edit text caret is as tall as the row it is on by @Arakmar in https://github.com/storytold/pdfcraft/pull/2462
- M3: the Pages panel follows the current page by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2785
- M3: type an exact zoom into the rail's zoom field by @bennyboer in https://github.com/storytold/pdfcraft/pull/1755
- fix(cli): use laid-out pages for dynamic XFA forms by @enesoglu in https://github.com/storytold/pdfcraft/pull/2813
- fix(engine): Save writes a repaired file in full even without edits (#1937) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2029
- M4: custom document properties through the engine and the tools by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2076
- Integration batch: 38 PRs on main by @aiongg in https://github.com/storytold/pdfcraft/pull/3041
- Keep leading spaces and tabs when wrapping plain text into a PDF by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/2754
- fix(ui): Save asks where to keep an Apple Mail attachment by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2757
- M10: preserve component Decode in lossless image export by @ahmadmuj in https://github.com/storytold/pdfcraft/pull/2793
- fix(ui): Read mode hides the quick toolbar (#2646) by @Erry91 in https://github.com/storytold/pdfcraft/pull/2809
- M10: running text is not a table row in Word, HTML and PowerPoint export (#2806) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2816
- M4: respect indirect page rotations when reading and editing by @MMexicann in https://github.com/storytold/pdfcraft/pull/1919
- fix(cos): an incremental save of a file with bytes before its header counts from the header by @cortenburg28-arch in https://github.com/storytold/pdfcraft/pull/2525
- fix(redact): removed links and comments leave the structure tree too (#2447) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2532
- A save keeps the permissions of the file it replaces by @oracola91 in https://github.com/storytold/pdfcraft/pull/2544
- M7: rewrap a paragraph at a slant at the width its rows have by @komo1iddin in https://github.com/storytold/pdfcraft/pull/2577
- Encryption: /Perms limits what an edited /P allows in AES-256 files by @oracola91 in https://github.com/storytold/pdfcraft/pull/2580
- M3: single-page view turns pages without a blank frame by @jcnnik in https://github.com/storytold/pdfcraft/pull/2587
- fix(edit): keep overlapping watermarks and distinct paragraphs on text edit (#1756) by @jonathanwxh-cell in https://github.com/storytold/pdfcraft/pull/2590
- M7: write a full font program compressed and find it again on any page by @komo1iddin in https://github.com/storytold/pdfcraft/pull/2594
- M3: a page jumped to in single-page view no longer hops into place by @jcnnik in https://github.com/storytold/pdfcraft/pull/2595
- Shorten over-long part file names in doc_split by bookmarks by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/2600
- Web: host mode needs a parent page on the same origin by @oracola91 in https://github.com/storytold/pdfcraft/pull/2601
- Don't treat a date ending in "Sep" as PM in AFDate/AFTime parsing by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/2602
- fix(xfa): a page area without has no limit, and occur min gets its pages (fixes #2574) by @hcchung1 in https://github.com/storytold/pdfcraft/pull/2604
- M14: no PdfCraft lion over PDF thumbnails and the preview pane by @magdale76 in https://github.com/storytold/pdfcraft/pull/2606
- fix(ui): Reveal in File Explorer selects files whose path has a space (#2579) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2625
- fix(ui): Copy in the selection action bar closes the bar by @Mateusindev in https://github.com/storytold/pdfcraft/pull/2638
- Let the page range select page 1 alone by @outragedevs in https://github.com/storytold/pdfcraft/pull/2642
- Round FormCalc Str and Format exact ties away from zero by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/2678
- fix(annot): percent-encode non-ASCII bytes written into link /URI by @charan-rathore in https://github.com/storytold/pdfcraft/pull/2679
- Replace Text: give the caret its own /NM (#2666) by @saad-mughal435 in https://github.com/storytold/pdfcraft/pull/2681
- fix(inspect): report /OpenAction JavaScript in document info by @charan-rathore in https://github.com/storytold/pdfcraft/pull/2687
- M6: distinguish CSV header tabs from TSV delimiters by @MMexicann in https://github.com/storytold/pdfcraft/pull/2688
- M1: saving refuses to replace a read-only file (#2658) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2699
- Remove security also from files with /Encrypt inline in the trailer by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2702
- Go to page brings the page into view horizontally too by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2703
- M3: ⌘G and ⇧⌘G step through matches from the find field (#2669) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2704
- fix(edit): wrap single turned rows at the page margin (#2578) by @jonathanwxh-cell in https://github.com/storytold/pdfcraft/pull/2710
- M1: read an xref table numbered from 1 that begins with object 0 (#2676) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2717
- M3: closing PdfCraft while minimized no longer saves a 0 x 0 window by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2730
- Fix wrapped revision buttons overlapping Binding by @ahmadmuj in https://github.com/storytold/pdfcraft/pull/2794
- fix(select): a picked picture that is edited away no longer leaves its highlight behind by @hade0ntema in https://github.com/storytold/pdfcraft/pull/2810
- fix(edit): emit rewritten paragraph after backgrounds between its rows (#2377) by @jonathanwxh-cell in https://github.com/storytold/pdfcraft/pull/2558
- docs: drop references to competing commercial software by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/3161
- M4: Ctrl-drag copies pages in the Organize grid (#2997) by @Mawfyy in https://github.com/storytold/pdfcraft/pull/3092
- ci: configure Dependabot for Cargo and GitHub Actions by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/3304
- M2: copy Flate back-references in runs by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/2035
- fix(forms): edit button labels in field properties by @PerchAnton in https://github.com/storytold/pdfcraft/pull/3064
- Keep added marks visible after unfinished marked content by @ahmadmuj in https://github.com/storytold/pdfcraft/pull/3279
- ci(deps): bump cachix/install-nix-action from 31.11.1 to 31.11.2 in the actions group by @dependabot[bot] in https://github.com/storytold/pdfcraft/pull/3322
- Drop U+FFFE and U+FFFF from XFDF/XML form-data export by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/3330
- Render weekday letters in FormCalc date pictures by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/3321
- cli: info names the standard a document declares by @Hamza0101 in https://github.com/storytold/pdfcraft/pull/3328
- M10: exported TIFF and JPEG pages record the resolution they were drawn at by @MortenHusted in https://github.com/storytold/pdfcraft/pull/3332
- Read doubled-sign integers like --280 in the COS lexer by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/3299
- docs: one hayro-interpret row in vendor/README, with the three patches lost to number collisions by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3312
- The recovery folder is owner-only on Unix by @oracola91 in https://github.com/storytold/pdfcraft/pull/3320
- M7: work out each font's space width once per paragraph rewrite (#2616) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3297
- Read /ActualText from named property lists in edit text and export by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/3301
- Find and edit images whose Do or cm spans two content streams by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/3294
- M1: a saved file keeps its creation date (#2658) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3291
- M2: a fax image with fewer /Rows than its /Height is decoded to its height (#3308) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3316
- M3: Accelerate coarse wheel scrolling by @chiranjeevi-max in https://github.com/storytold/pdfcraft/pull/1094
- Make form properties byte comparisons independent of the clock by @earlvanze in https://github.com/storytold/pdfcraft/pull/3367
- Clamp the zoom-anchor scroll to the content so zooming out no longer jolts the page (#3266) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/3350
- Keep the current page when switching viewer modes by @earlvanze in https://github.com/storytold/pdfcraft/pull/3362
- Clear image pixels intersected by redaction marks by @earlvanze in https://github.com/storytold/pdfcraft/pull/3368
- fix(preflight): identify PDF standards by XML namespace by @earlvanze in https://github.com/storytold/pdfcraft/pull/3364
- Keep long menus usable in short windows by @earlvanze in https://github.com/storytold/pdfcraft/pull/3374
- fix(windows): name the single-instance socket by the session id, so a launch without SESSIONNAME finds its session's window (#3338) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3340
- fix(sign): offer only certificates that may sign documents from the Windows store by @Tomcatt in https://github.com/storytold/pdfcraft/pull/3365
- M2: a tiling pattern drawn once shows its cell at full scale (#3349) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3356
- fix(parse): accept spaces between stream and its line break by @pedrocaluiz in https://github.com/storytold/pdfcraft/pull/3378
- M2: a JP2 image in a colour space the decoder refuses is drawn by its component count (#3306) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3363
- M8: redaction's structure-tree walks start from the parent and ID trees too (#2447, #3302) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/3285
- Docs: install the CLI and register it with MCP clients by @KnottyDyes in https://github.com/storytold/pdfcraft/pull/3478
- Text: tracked glyphs retain their word boundaries by @KnottyDyes in https://github.com/storytold/pdfcraft/pull/3477
- M6: a secured form's notice bar still says it is a form by @EricKaden in https://github.com/storytold/pdfcraft/pull/3404
- M6: the date picker follows a whole date typed while it is open by @EricKaden in https://github.com/storytold/pdfcraft/pull/3393
- M6: a date typed without separators fills a yyyymmdd field by @EricKaden in https://github.com/storytold/pdfcraft/pull/3388
- Never-crash gate on oracle and testkit; oracle find() no longer panics on an empty needle by @gsilano in https://github.com/storytold/pdfcraft/pull/3435
- Fix shaded Type 3 glyphs at translated positions by @earlvanze in https://github.com/storytold/pdfcraft/pull/3412
- Keep save shortcuts behind other dialogs by @earlvanze in https://github.com/storytold/pdfcraft/pull/3387
- M10: Office export follows forms 50 deep and up to 50 000 a page and says where it stops (#3120) by @Faabyy in https://github.com/storytold/pdfcraft/pull/3426
- docs: base the XFA page area Acrobat observations on a synthetic form (#2574) by @hcchung1 in https://github.com/storytold/pdfcraft/pull/3431
- Tests: the parser-cancel test guards against a hang, not a 2 s limit (#1970) by @Faabyy in https://github.com/storytold/pdfcraft/pull/3462
- Add fills and border widths to text boxes and callouts by @earlvanze in https://github.com/storytold/pdfcraft/pull/3366
- Edit text: refuse a rewrite of text that is a clipping path by @Hamza0101 in https://github.com/storytold/pdfcraft/pull/3447
- M5.6: preserve nested annotation values in FDF exports by @MMexicann in https://github.com/storytold/pdfcraft/pull/1971
- docs: add SonarCloud and CodeRabbit badges to README by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/3271
- @PerchAnton made their first contribution in https://github.com/storytold/pdfcraft/pull/3182
- @ogzhnklvz made their first contribution in https://github.com/storytold/pdfcraft/pull/3114
- @kgemici made their first contribution in https://github.com/storytold/pdfcraft/pull/2998
- @Erry91 made their first contribution in https://github.com/storytold/pdfcraft/pull/1720
- @hms5232 made their first contribution in https://github.com/storytold/pdfcraft/pull/2856
- @IanHollow made their first contribution in https://github.com/storytold/pdfcraft/pull/2399
- @Bortlesboat made their first contribution in https://github.com/storytold/pdfcraft/pull/2433
- @Arakmar made their first contribution in https://github.com/storytold/pdfcraft/pull/2462
- @bennyboer made their first contribution in https://github.com/storytold/pdfcraft/pull/1755
- @enesoglu made their first contribution in https://github.com/storytold/pdfcraft/pull/2813
- @aiongg made their first contribution in https://github.com/storytold/pdfcraft/pull/3041
- @ahmadmuj made their first contribution in https://github.com/storytold/pdfcraft/pull/2793
- @oracola91 made their first contribution in https://github.com/storytold/pdfcraft/pull/2544
- @jcnnik made their first contribution in https://github.com/storytold/pdfcraft/pull/2587
- @hcchung1 made their first contribution in https://github.com/storytold/pdfcraft/pull/2604
- @Mateusindev made their first contribution in https://github.com/storytold/pdfcraft/pull/2638
- @outragedevs made their first contribution in https://github.com/storytold/pdfcraft/pull/2642
- @charan-rathore made their first contribution in https://github.com/storytold/pdfcraft/pull/2679
- @saad-mughal435 made their first contribution in https://github.com/storytold/pdfcraft/pull/2681
- @hade0ntema made their first contribution in https://github.com/storytold/pdfcraft/pull/2810
- @dependabot[bot] made their first contribution in https://github.com/storytold/pdfcraft/pull/3322
- @Hamza0101 made their first contribution in https://github.com/storytold/pdfcraft/pull/3328
- @MortenHusted made their first contribution in https://github.com/storytold/pdfcraft/pull/3332
- @Tomcatt made their first contribution in https://github.com/storytold/pdfcraft/pull/3365
- @pedrocaluiz made their first contribution in https://github.com/storytold/pdfcraft/pull/3378
- @KnottyDyes made their first contribution in https://github.com/storytold/pdfcraft/pull/3478
- @EricKaden made their first contribution in https://github.com/storytold/pdfcraft/pull/3404
- @gsilano made their first contribution in https://github.com/storytold/pdfcraft/pull/3435
- @Faabyy made their first contribution in https://github.com/storytold/pdfcraft/pull/3426
Full Changelog: https://github.com/storytold/pdfcraft/compare/v0.9.0...v0.10.1
PdfCraft v0.9.0
- Make a missing external oracle loud instead of a silent pass by @tanish2k09 in https://github.com/storytold/pdfcraft/pull/2266
- One way to write a synthetic PDF fixture by @tanish2k09 in https://github.com/storytold/pdfcraft/pull/2275
- Measure rendering against Poppler, and turn the pixel test on by @tanish2k09 in https://github.com/storytold/pdfcraft/pull/2286
- Say what the render-oracle score does and does not mean by @tanish2k09 in https://github.com/storytold/pdfcraft/pull/2290
- Pin that every JBIG2 conformance fixture decodes to the same picture by @tanish2k09 in https://github.com/storytold/pdfcraft/pull/2300
- The fonts README still called the standard-14 widths an estimate by @tanish2k09 in https://github.com/storytold/pdfcraft/pull/2304
- The text oracle scored us zero for honouring a no-copy document by @tanish2k09 in https://github.com/storytold/pdfcraft/pull/2312
- Fix oracle Clippy failure for four-byte pixel chunks by @sanyamsingh001 in https://github.com/storytold/pdfcraft/pull/2342
- Preserve precision when writing page transforms by @sanyamsingh001 in https://github.com/storytold/pdfcraft/pull/946
- Printing: a layer that is off in the document stays off on the sheets by @Byxis in https://github.com/storytold/pdfcraft/pull/1135
- Clear image leftovers by @not-a-feature in https://github.com/storytold/pdfcraft/pull/1151
- Tests: use 300 DPI synthetic scan for OCR searchability by @earlvanze in https://github.com/storytold/pdfcraft/pull/1197
- M8: Bound and reuse repeated redaction overlays by @LabDennis in https://github.com/storytold/pdfcraft/pull/1426
- M4: keep the last saved revision across undo (#1310, #1311, #1312) by @bartalos86 in https://github.com/storytold/pdfcraft/pull/1435
- M5: add comment and reply submission shortcuts by @Luchsen in https://github.com/storytold/pdfcraft/pull/1457
- M12: mark leaf tags as artifacts by @earlvanze in https://github.com/storytold/pdfcraft/pull/1475
- COS: index cross-reference entries on demand by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/1505
- feat(ui): drop files on the Pages panel to insert pages by @tylerstoltz in https://github.com/storytold/pdfcraft/pull/1547
- Clamp extracted Indexed image samples to the declared palette range by @FredApps in https://github.com/storytold/pdfcraft/pull/1581
- Keep page labels and focused navigation consistent across reloads by @sanyamsingh001 in https://github.com/storytold/pdfcraft/pull/1667
- Keep the full final spread reachable with unequal page heights by @FredApps in https://github.com/storytold/pdfcraft/pull/1672
- Text selection: dragging to the top or bottom edge of the view scrolls it by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1675
- Edit text & images: a dragged image's pixels follow its frame instead of waiting for the release by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1677
- Text selection: a drag after a double- or triple-click extends by whole words or lines by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1689
- fix(render, ui): form-heavy documents draw and fill fast (spot-colour images, widget placement, Fields panel) by @Piohrun in https://github.com/storytold/pdfcraft/pull/1691
- i18n(pt-br): fix 6 Brazilian Portuguese strings by @s17sh70x2jfl031ag in https://github.com/storytold/pdfcraft/pull/1694
- Sinhala and Tamil interface: draw with an installed font (part of #1688) by @manchitmr in https://github.com/storytold/pdfcraft/pull/1706
- M5: Fill & Sign text reads across on rotated pages by @alexanderalber in https://github.com/storytold/pdfcraft/pull/1710
- M14: add Vietnamese interface and date localization by @duydev in https://github.com/storytold/pdfcraft/pull/1712
- Edit text: the four-way arrow wherever a drag moves, and a sharp page while editing by @ch0kemeister in https://github.com/storytold/pdfcraft/pull/1717
- macOS: the standard About panel shows the website and Discord links (#1287) by @ch0kemeister in https://github.com/storytold/pdfcraft/pull/1718
- M6: detect form fields on scanned pages (#1721) by @alexanderalber in https://github.com/storytold/pdfcraft/pull/1722
- M2: Make literal text search linear and tolerate missing layout metadata by @LabDennis in https://github.com/storytold/pdfcraft/pull/1725
- fix(ui): clicking a theme card in Preferences picks that theme by @umesh429 in https://github.com/storytold/pdfcraft/pull/1727
- Issue #1676: put fallback faces on the interface baseline by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/1743
- M7: fold repeated image transforms into one cm instead of nesting q by @komo1iddin in https://github.com/storytold/pdfcraft/pull/1746
- i18n: Taiwan vocabulary and the missing entries in zh-hant by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/1750
- M7: keep the source operators of rows a text edit doesn't reach by @komo1iddin in https://github.com/storytold/pdfcraft/pull/1754
- M7: draw new characters with the source font's own embedded program by @komo1iddin in https://github.com/storytold/pdfcraft/pull/1760
- Automation: tell a tool name or an unknown id from a command without a tool in command_run by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1765
- M7: reuse a page's font resource and program when embedding again by @komo1iddin in https://github.com/storytold/pdfcraft/pull/1779
- M2: Add word and character counts with optional content exclusions by @LabDennis in https://github.com/storytold/pdfcraft/pull/1780
- M7: read the page once per keystroke when measuring a text draft by @komo1iddin in https://github.com/storytold/pdfcraft/pull/1781
- M11: merge image fragments, and the Standard and Mobile optimizer presets (closes #1783) by @magdale76 in https://github.com/storytold/pdfcraft/pull/1784
- M7: rewrap Chinese and Japanese text between characters by @komo1iddin in https://github.com/storytold/pdfcraft/pull/1827
- M7: justify paragraphs whose font shows the space with another code by @komo1iddin in https://github.com/storytold/pdfcraft/pull/1832
- Edit image: give each flip button the icon of its own mirror axis by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1841
- M10: A6 paper in the print dialog and doc_print by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1849
- M7: Add / Update / Remove menu on Header and footer, Watermark, Background by @Byxis in https://github.com/storytold/pdfcraft/pull/1857
- fix(a11y): mark_decorative no longer panics on an unpaired ParentTree key (#1809) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/1862
- M2: a /Rotate that isn't a quarter turn counts as 0, as the page is drawn by @pauliusiv123-rgb in https://github.com/storytold/pdfcraft/pull/1863
- fix(cos): a nonpositive crypt-filter /Length no longer overflows (#1816) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/1864
- fix(audit): find rectangle covers closed with h or painted with b/b* (#1817) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/1865
- fix(sign): an unreadable extendedKeyUsage allows no purpose (#1807) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/1866
- audit: harden finding classes with golden tests and docs by @ejbarraza in https://github.com/storytold/pdfcraft/pull/1892
- fix(audit): an applied redaction at the end of a line is not a faux redaction by @CouchRiv in https://github.com/storytold/pdfcraft/pull/1898
- fix(a11y): bookmarks from structure keep the words of glyph-by-glyph headings by @CouchRiv in https://github.com/storytold/pdfcraft/pull/1899
- fix(audit): report faux-redaction rectangles in top-left page points by @CouchRiv in https://github.com/storytold/pdfcraft/pull/1900
- fix: render CCITT Group 4 images that declare /Rows 0 by @ehinderer in https://github.com/storytold/pdfcraft/pull/1903
- fix(automation): a missing path under --root says where it was looked for (#1890) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/1907
- M3: touchpad swipes glide on after the fingers lift on Wayland (#531) by @mlkonrad in https://github.com/storytold/pdfcraft/pull/1909
- fix(redact): the tail of a longer number is not a phone number (#1884) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/1911
- fix(forms): new text and date fields take Acrobat's Auto font size (#1888) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/1912
- feat(ui): a middle click closes a tab (#1853) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/1920
- fix(organize): bound how deep an import follows the object graph (#1800) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/1921
- M2: Bound page-tree traversal memory for repeated children (#1798) by @LabDennis in https://github.com/storytold/pdfcraft/pull/1926
- Compare files: side by side, scrolled and zoomed together by @regendorf-ux in https://github.com/storytold/pdfcraft/pull/1927
- M11: measure every use of an image drawn through deeply nested forms (#1811) by @mlkonrad in https://github.com/storytold/pdfcraft/pull/1933
- fix(edit): flattening keeps a widget it cannot draw and an undrawn reply (#1794) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/1934
- fix(control): a deadline and a cap for connections that have not authenticated (#1806) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/1939
- Issue #305: an update keeps the File Explorer menu choices, and the image menu gets a switch by @jcl-bit in https://github.com/storytold/pdfcraft/pull/1941
- fix(sign): a signed revision of a password-protected file opens with the document's key (#1808) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/1945
- feat(organize): Insert pages from file brings the file's bookmarks by @CouchRiv in https://github.com/storytold/pdfcraft/pull/1947
- XFA: flatten a form into a plain PDF, or convert it to a static form by @ysrdevs in https://github.com/storytold/pdfcraft/pull/1948
- feat(cli): page lists take ranges, and a missing page is named as typed (#1923) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/1950
- M9: signature labels follow the interface language, and one the font can't draw is refused, never written as ? by @kekeandzeyu in https://github.com/storytold/pdfcraft/pull/1951
- Keep native open replies queued while dialogs and pickers are active by @sanyamsingh001 in https://github.com/storytold/pdfcraft/pull/1953
- M2: bound ASCII85 decoding by the stream's output limit (#1796) by @Ridzzz0Alam in https://github.com/storytold/pdfcraft/pull/1954
- M4: write each page label dictionary as an indirect object by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1959
- M6: auto-size text fields shrink and wrap typed text on screen, as on the page by @dsskaggs-ai in https://github.com/storytold/pdfcraft/pull/1964
- Print: print as image (Advanced), with grayscale pictures by @regendorf-ux in https://github.com/storytold/pdfcraft/pull/1965
- fix(automation): no top-level oneOf in form_set_props input schema (#1961) by @andreero0 in https://github.com/storytold/pdfcraft/pull/1967
- CLI: run --script --report prints one JSON document for the run (#1891) by @vangel76 in https://github.com/storytold/pdfcraft/pull/1974
- Issue #1910: Organize opens on the current page by @alehel in https://github.com/storytold/pdfcraft/pull/1975
- Signature pad: Undo button and Ctrl/Cmd+Z take back the last stroke (#1963) by @vangel76 in https://github.com/storytold/pdfcraft/pull/1978
- View: show page size when hovering the bottom-left of the page view (#1855) by @vangel76 in https://github.com/storytold/pdfcraft/pull/1979
- Export to Word: show pictures on positioned pages, bound the pictures (#1936) by @vangel76 in https://github.com/storytold/pdfcraft/pull/1981
- M2: keep the raw crop minimum in physical points by @sanyamsingh001 in https://github.com/storytold/pdfcraft/pull/1982
- Comments: font size for text boxes in Comment Properties (#1908) by @vangel76 in https://github.com/storytold/pdfcraft/pull/1984
- Viewer: a press on a page makes it the current page (#1956) by @vangel76 in https://github.com/storytold/pdfcraft/pull/1985
- View: Single Page wheel turns to the next page at the edge of a zoomed-in page (#1924) by @vangel76 in https://github.com/storytold/pdfcraft/pull/1986
- Draw: a released pen stroke stays on screen until the page raster has it (#1858) by @vangel76 in https://github.com/storytold/pdfcraft/pull/1987
- Forms: simplified field notation written as real JavaScript, not AFMakeNumber(0) by @regendorf-ux in https://github.com/storytold/pdfcraft/pull/1995
- Edit: crop an existing page image with its handles by @regendorf-ux in https://github.com/storytold/pdfcraft/pull/2002
- Redaction Tool Properties: the mark's appearance, and Make properties default by @regendorf-ux in https://github.com/storytold/pdfcraft/pull/2008
- fix(ui): wrap long filenames and metadata in Document Properties (#2011) by @Osaym in https://github.com/storytold/pdfcraft/pull/2012
- M2: clip intersection starts its row walk at the first shared row by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/2026
- fix(render): a Multiply highlight inside a transparency group keeps the text (#1968) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2027
- M7: list Edit text & images first under Modify page by @lava in https://github.com/storytold/pdfcraft/pull/2028
- Linux/BSD: open files from later launches in the running PdfCraft (#1726) by @tydude001 in https://github.com/storytold/pdfcraft/pull/2037
- fix(forms): read each JavaScript name tree node once by @Dev-next-gen in https://github.com/storytold/pdfcraft/pull/2040
- Wait for remote-link errors before asserting in UI tests by @sanyamsingh001 in https://github.com/storytold/pdfcraft/pull/2041
- M2: heavy-sheet generator and page timing harness (item 8 of storytold/pdfcraft#623) by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/2042
- perf(xfa): make som index lookup linear by @osaidahmed in https://github.com/storytold/pdfcraft/pull/2047
- i18n(es): translate the new print and Add text strings, Type on the signature pad, tú register by @txiki739 in https://github.com/storytold/pdfcraft/pull/2049
- fix(ui): preserve Ctrl+Alt+Q during digital ID creation by @sampaiodias in https://github.com/storytold/pdfcraft/pull/2055
- chore(contributors): credit mtlcl410 by display name by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2065
- M4: read page transitions and display times (/Trans, /Dur) into DocInfo by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2074
- M4: set page transitions and display times (/Trans, /Dur) through the engine and the tools by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2083
- M12: the geometry of page transitions (ISO 32000-2 table 164) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2084
- M3: a document that asks to open in Full Screen mode asks first (/PageMode /FullScreen) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2086
- chore(packaging): give test-msi.ps1 a UTF-8 BOM so Windows PowerShell 5.1 parses it by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2092
- fix(organize): keep page labels on their pages when pages are deleted by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2093
- fix(ui): check boxes over text should show the pointing hand, not the I-beam by @alehel in https://github.com/storytold/pdfcraft/pull/2099
- M3: preserve coordinate clicks across slow frames by @sanyamsingh001 in https://github.com/storytold/pdfcraft/pull/2100
- fix(a11y): mark_decorative finds MCIDs in named property lists (#1813) by @jonathanwxh-cell in https://github.com/storytold/pdfcraft/pull/2106
- fix(ui): header, footer and watermark dialogs refuse undrawable text … by @jonathanwxh-cell in https://github.com/storytold/pdfcraft/pull/2107
- M7: Hebrew in Add text (#128) by @michaelsh1 in https://github.com/storytold/pdfcraft/pull/2109
- fix(sign): a signed page's resources are page content whatever keys a later revision writes (#1787) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2115
- fix: Space Audit lines up its columns and counts form fonts as fonts by @alehel in https://github.com/storytold/pdfcraft/pull/2118
- test(ui): wait for the save to write the file instead of a fixed frame count by @lhymes in https://github.com/storytold/pdfcraft/pull/2122
- fix(render): a soft mask fades a gradient fill again by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2132
- OCR: Downsample to shrinks a page box given in pixels by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2135
- Fix multi-select choice index ordering by @sanyamsingh001 in https://github.com/storytold/pdfcraft/pull/2144
- M3: Improve Back/Forward page navigation (fixes #2080) by @srt8hellcat2-ui in https://github.com/storytold/pdfcraft/pull/2151
- fix(fonts): keep a subset Type 0 font for glyphs /W leaves to /DW by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2153
- M1: every PDF leaves the engine checked, and every writer uses one staging-file writer (#2166) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2182
- M9: harden .p12 digital IDs (#1847) by @Ridzzz0Alam in https://github.com/storytold/pdfcraft/pull/2201
- packaging: RPM requires library sonames, so openSUSE can install it by @tydude001 in https://github.com/storytold/pdfcraft/pull/2205
- fix(edit): keep the runs of untouched text between two edits by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2209
- Forms: fields that share a name take the same value by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2217
- M3: Save asks before writing over a changed file, one tab per file, locked autosaves (#2166) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2218
- fix(redact): size image clearing with checked arithmetic (#2177) by @atahabilder1 in https://github.com/storytold/pdfcraft/pull/2221
- fix(forms): open a text field on press so dragging over it selects text by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/2226
- fix(test): reload tests pin the English interface like every other harness by @abc2cb in https://github.com/storytold/pdfcraft/pull/2239
- M7: the Edit tab turns on Edit text & images, as in Acrobat by @abc2cb in https://github.com/storytold/pdfcraft/pull/2241
- fix(edit): keep Edit text & images boxes drawn while page input waits by @abc2cb in https://github.com/storytold/pdfcraft/pull/2242
- fix(organize): draw a rotated page large and centred in its grid cell by @abc2cb in https://github.com/storytold/pdfcraft/pull/2243
- M4: lay out Organize pages as Acrobat's panel by @abc2cb in https://github.com/storytold/pdfcraft/pull/2248
- feat(ui): Shift on a corner handle keeps proportions for comments, stamps, and form fields by @adrianiglesiass in https://github.com/storytold/pdfcraft/pull/2252
- Refuse header/footer Bates numbers that would overflow u64 by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/2253
- fix(preflight): read device colour from content operators, not whitespace-split bytes by @guillehr2 in https://github.com/storytold/pdfcraft/pull/2260
- docs: catalog hashes in ATTRIBUTION.toml are updated by hand by @vangel76 in https://github.com/storytold/pdfcraft/pull/2271
- Tabs: show the drop line in front of the first tab (#2225) by @vangel76 in https://github.com/storytold/pdfcraft/pull/2278
- M0: the every-command test never opens a real file dialog by @abszar in https://github.com/storytold/pdfcraft/pull/2281
- Export All Images: zero-pad the page number so files sort in page order (#2208) by @snipeTR in https://github.com/storytold/pdfcraft/pull/2295
- edit: commit the open paragraph when a click switches text boxes by @midasmatterhorn in https://github.com/storytold/pdfcraft/pull/2302
- Read WinAnsi 0xAD as a hyphen, so search and redaction can see it by @tanish2k09 in https://github.com/storytold/pdfcraft/pull/2305
- fix(engine): give a host with no clock or time zone a real one (Session::with_wall_clock) by @bonfim6P in https://github.com/storytold/pdfcraft/pull/2317
- feat(automation): Automation::render_pixels returns a page as RGBA, without the PNG round trip by @bonfim6P in https://github.com/storytold/pdfcraft/pull/2318
- M14: Italian catalog: complete the missing entries by @kcobelli-pixel in https://github.com/storytold/pdfcraft/pull/2320
- fix(ui): stop dropping cached tiles when zooming away and back (#2196) by @Hathor875 in https://github.com/storytold/pdfcraft/pull/2323
- test(ui): wait for the text layer by state, not for a fixed second (#1277) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2327
- fix(print): the Print dialog waits for the printer list instead of offering Save as PDF (#160) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2332
- M3: arrow keys follow the Scroll speed preference (#985) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2333
- Requeue render requests after parse cancellation by @sanyamsingh001 in https://github.com/storytold/pdfcraft/pull/2334
- feat(automation): accessibility_tags lists tags a page at a time, with filters by @CouchRiv in https://github.com/storytold/pdfcraft/pull/2335
- feat(automation): bookmarks and links say where on the page they go by @CouchRiv in https://github.com/storytold/pdfcraft/pull/2344
- fix(ui): on macOS, dragging a tab moves the tab, not the window by @tisca26 in https://github.com/storytold/pdfcraft/pull/2347
- M10.5: convert print previews to grayscale by @earlvanze in https://github.com/storytold/pdfcraft/pull/2351
- Preserve literal spaces in page-label prefixes by @sanyamsingh001 in https://github.com/storytold/pdfcraft/pull/2355
- crypt: property tests for encrypted content, crypt filters and damaged ciphertext by @amoisttowe1 in https://github.com/storytold/pdfcraft/pull/2358
- fix(ui): a shape just drawn resizes from its handles without the Select tool by @cortenburg28-arch in https://github.com/storytold/pdfcraft/pull/2362
- fix(cli): render comments the app renders when /AP is missing by @earlvanze in https://github.com/storytold/pdfcraft/pull/2382
- Fix util.printd panic on an escaped multi-byte character by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/2386
- Reject impossible dates such as Feb 30 in FormCalc Date2Num and Parse by @Silvertree2010 in https://github.com/storytold/pdfcraft/pull/2388
- M5: Make Properties Default in Comment Properties by @DCM4711 in https://github.com/storytold/pdfcraft/pull/2031
- M1: keep unknown trailer entries on a full save (#1338) by @bartalos86 in https://github.com/storytold/pdfcraft/pull/1431
- Tests: viewer find test waits by a deadline (flaky under load) by @echelon in https://github.com/storytold/pdfcraft/pull/779
- Add permission-aware selected-text Copy to Edit and context menus by @FredApps in https://github.com/storytold/pdfcraft/pull/1244
- M6: expose dropdown and list-box field alignment (#1208) by @DWAA1660 in https://github.com/storytold/pdfcraft/pull/1263
- M14: correct localization and installer parity statuses (gap 24) by @rp6186030 in https://github.com/storytold/pdfcraft/pull/1211
- M1: repair exhausted xref hints without object-number overflow (#1337) by @DWAA1660 in https://github.com/storytold/pdfcraft/pull/1359
- M10: Windows print jobs show per-sheet progress; printers list faster (follow-up to #944) by @TKIPisalegacycipher in https://github.com/storytold/pdfcraft/pull/1236
- Keep selected form values and page content through later edits (#1319, #1305, #1324, #1306) by @bartalos86 in https://github.com/storytold/pdfcraft/pull/1452
- M7: keep line breaks when editing a multi-line paragraph (#1443) by @rp6186030 in https://github.com/storytold/pdfcraft/pull/1486
- MCP: confine file access with --automation-read-root and --automation-write-root by @isaac-levine in https://github.com/storytold/pdfcraft/pull/1448
- fix(macos): Cmd+Q asks about unsaved changes (#1136) by @Mahmud-Baspehlivan in https://github.com/storytold/pdfcraft/pull/1533
- M3: scroll the view when drawing at an edge; take back a polygon's last point by @philip-tam in https://github.com/storytold/pdfcraft/pull/1549
- M2: preserve inline-image pixels when rewriting page content by @MMexicann in https://github.com/storytold/pdfcraft/pull/1562
- Perf: defer marker and link index scans until first use by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/1434
- M12: tag unstructured AcroForm widgets by @earlvanze in https://github.com/storytold/pdfcraft/pull/1451
- M12: find untagged accessibility content by @earlvanze in https://github.com/storytold/pdfcraft/pull/1463
- feat(ui): preference to hide author-only highlight hover previews (#1432) by @Totopo27 in https://github.com/storytold/pdfcraft/pull/1466
- Print: 4 x 6 in label paper and a Label layout for shipping labels by @Ace40063 in https://github.com/storytold/pdfcraft/pull/1583
- M12: show structure tag content by @earlvanze in https://github.com/storytold/pdfcraft/pull/1496
- Keep added text selectable over form fields by @FredApps in https://github.com/storytold/pdfcraft/pull/1528
- M7: Cut, Redact, Create Link and Recognize Text in the picture menu; keep the menu open by @philip-tam in https://github.com/storytold/pdfcraft/pull/1621
- M6: preserve XFDF field text around XML comments by @storybored379 in https://github.com/storytold/pdfcraft/pull/1647
- M14: store XDG preferences in configuration directory (#1395) by @DWAA1660 in https://github.com/storytold/pdfcraft/pull/1536
- M7: grow text boxes and edit existing text by @YouseifUS in https://github.com/storytold/pdfcraft/pull/1539
- M6: make list boxes directly selectable and scroll to selection (#1524) by @lollinoo in https://github.com/storytold/pdfcraft/pull/1543
- Complete the Arabic (العربية) catalog: every missing row translated by @hasan-sdaif in https://github.com/storytold/pdfcraft/pull/1559
- M1: edit finds the pages a damaged file's readers find by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1664
- M14: Fix(nixos): discover installed UI fallback fonts on NixOS by @tomasmark79 in https://github.com/storytold/pdfcraft/pull/1553
- M6: preserve carriage returns in form CSV exports by @MMexicann in https://github.com/storytold/pdfcraft/pull/1563
- M6: export valid XML tags for Unicode field names by @MMexicann in https://github.com/storytold/pdfcraft/pull/1588
- Keep annotations readable under reading colours (#1548) by @edurbs in https://github.com/storytold/pdfcraft/pull/1557
- Comments panel: page groups fold from their chevron by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1614
- M3: Wayland: stop retaining Ctrl zoom for pixel-only wheel input by @tomasmark79 in https://github.com/storytold/pdfcraft/pull/1569
- Tests: the signing test's password meets the 8-character minimum (#2417) by @wstock in https://github.com/storytold/pdfcraft/pull/2420
- fix(parity): merge the keys concurrent merges left twice in acrobat-features.toml by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2419
- fix(i18n): zh-hant had two keys twice after concurrent merges by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2414
- Tests: repair stale save and search regressions without weakening validation by @FredApps in https://github.com/storytold/pdfcraft/pull/2484
- Fix main UI regressions in paging, fonts and test expectations by @FredApps in https://github.com/storytold/pdfcraft/pull/2502
- i18n: fill Vietnamese and Lithuanian coverage gaps on main by @FredApps in https://github.com/storytold/pdfcraft/pull/2510
- Read the Annex D.2 alias codes as the ink they draw, in both tables by @tanish2k09 in https://github.com/storytold/pdfcraft/pull/2656
- Score reading order in the text oracle, which word F1 cannot see by @tanish2k09 in https://github.com/storytold/pdfcraft/pull/2680
- Record the day's two changes in the roadmap and gap 12 by @tanish2k09 in https://github.com/storytold/pdfcraft/pull/2682
- fix(render): faster sampled functions, image decodes across zoom levels and patch meshes (vendored hayro-interpret patches 31–33) by @Piohrun in https://github.com/storytold/pdfcraft/pull/2436
- fix(ui): validated signature display, snapshot tab reuse by @chiranjeevi-max in https://github.com/storytold/pdfcraft/pull/1895
- ci: add nix check workflow by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/2727
- test: retain open regressions and deterministic fixtures by @skylartaylor in https://github.com/storytold/pdfcraft/pull/2067
- M8: the redaction audit finds a cover over one word of a long line (#2662) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/2698
- Resolve remote links and document-supplied output names safely by @skylartaylor in https://github.com/storytold/pdfcraft/pull/3083
- M6: preserve complete plain XML form values by @MMexicann in https://github.com/storytold/pdfcraft/pull/2686
- deny: acknowledge the new zbus unmaintained advisories by @skylartaylor in https://github.com/storytold/pdfcraft/pull/3091
- M6: preserve whitespace in XML and XFDF attributes by @MMexicann in https://github.com/storytold/pdfcraft/pull/1917
- fix(filters): preserve output-limit errors in raw Flate fallback by @MMexicann in https://github.com/storytold/pdfcraft/pull/2267
- Read stream-boundary comments as the renderer does, and isolate new marks from appended graphics state by @skylartaylor in https://github.com/storytold/pdfcraft/pull/3102
- @Luchsen made their first contribution in https://github.com/storytold/pdfcraft/pull/1457
- @tylerstoltz made their first contribution in https://github.com/storytold/pdfcraft/pull/1547
- @s17sh70x2jfl031ag made their first contribution in https://github.com/storytold/pdfcraft/pull/1694
- @manchitmr made their first contribution in https://github.com/storytold/pdfcraft/pull/1706
- @alexanderalber made their first contribution in https://github.com/storytold/pdfcraft/pull/1710
- @duydev made their first contribution in https://github.com/storytold/pdfcraft/pull/1712
- @ehinderer made their first contribution in https://github.com/storytold/pdfcraft/pull/1903
- @regendorf-ux made their first contribution in https://github.com/storytold/pdfcraft/pull/1927
- @andreero0 made their first contribution in https://github.com/storytold/pdfcraft/pull/1967
- @vangel76 made their first contribution in https://github.com/storytold/pdfcraft/pull/1974
- @alehel made their first contribution in https://github.com/storytold/pdfcraft/pull/1975
- @Osaym made their first contribution in https://github.com/storytold/pdfcraft/pull/2012
- @lava made their first contribution in https://github.com/storytold/pdfcraft/pull/2028
- @tydude001 made their first contribution in https://github.com/storytold/pdfcraft/pull/2037
- @Dev-next-gen made their first contribution in https://github.com/storytold/pdfcraft/pull/2040
- @osaidahmed made their first contribution in https://github.com/storytold/pdfcraft/pull/2047
- @txiki739 made their first contribution in https://github.com/storytold/pdfcraft/pull/2049
- @sampaiodias made their first contribution in https://github.com/storytold/pdfcraft/pull/2055
- @jonathanwxh-cell made their first contribution in https://github.com/storytold/pdfcraft/pull/2106
- @michaelsh1 made their first contribution in https://github.com/storytold/pdfcraft/pull/2109
- @lhymes made their first contribution in https://github.com/storytold/pdfcraft/pull/2122
- @atahabilder1 made their first contribution in https://github.com/storytold/pdfcraft/pull/2221
- @abc2cb made their first contribution in https://github.com/storytold/pdfcraft/pull/2239
- @adrianiglesiass made their first contribution in https://github.com/storytold/pdfcraft/pull/2252
- @Silvertree2010 made their first contribution in https://github.com/storytold/pdfcraft/pull/2253
- @abszar made their first contribution in https://github.com/storytold/pdfcraft/pull/2281
- @midasmatterhorn made their first contribution in https://github.com/storytold/pdfcraft/pull/2302
- @bonfim6P made their first contribution in https://github.com/storytold/pdfcraft/pull/2317
- @kcobelli-pixel made their first contribution in https://github.com/storytold/pdfcraft/pull/2320
- @tisca26 made their first contribution in https://github.com/storytold/pdfcraft/pull/2347
- @amoisttowe1 made their first contribution in https://github.com/storytold/pdfcraft/pull/2358
- @cortenburg28-arch made their first contribution in https://github.com/storytold/pdfcraft/pull/2362
- @DCM4711 made their first contribution in https://github.com/storytold/pdfcraft/pull/2031
- @TKIPisalegacycipher made their first contribution in https://github.com/storytold/pdfcraft/pull/1236
- @isaac-levine made their first contribution in https://github.com/storytold/pdfcraft/pull/1448
- @Ace40063 made their first contribution in https://github.com/storytold/pdfcraft/pull/1583
- @hasan-sdaif made their first contribution in https://github.com/storytold/pdfcraft/pull/1559
- @tomasmark79 made their first contribution in https://github.com/storytold/pdfcraft/pull/1553
Full Changelog: https://github.com/storytold/pdfcraft/compare/v0.8.0...v0.9.0
PdfCraft v0.8.0
- Add a PR template, and record the review practice and external-PR bar by @tanish2k09 in https://github.com/storytold/pdfcraft/pull/223
- F1 + F2: exact standard-14 metrics, and code-to-Unicode completeness by @tanish2k09 in https://github.com/storytold/pdfcraft/pull/357
- Retire inherited resources by @not-a-feature in https://github.com/storytold/pdfcraft/pull/1348
- Fix Lab Bradford adaptation to use LMS white-point ratios by @FredApps in https://github.com/storytold/pdfcraft/pull/1417
- M7: keep a neighbouring line when replacing text (#1316) by @bartalos86 in https://github.com/storytold/pdfcraft/pull/1427
- fix(render): Type 3 text ignores rendering modes other than invisible (vendored hayro-interpret patch 27) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1478
- fix(edit): flattening form fields also drops the ones whose widgets are on no page by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1480
- fix: allow links beneath highlight annotations by @FredApps in https://github.com/storytold/pdfcraft/pull/1481
- M12: move tags in the order panel by @earlvanze in https://github.com/storytold/pdfcraft/pull/1482
- Desktop: prepare large PDFs off the UI thread by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/1493
- fix(ui): dragged added text follows the pointer before release by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1508
- fix(organize): normalize rotations before adding so large quarter turns cannot overflow by @webdevtodayjason in https://github.com/storytold/pdfcraft/pull/1512
- Allow mouse-wheel scrolling during text selection by @FredApps in https://github.com/storytold/pdfcraft/pull/1514
- fix(audit): a rectangle drawn as an m/l path is a cover like re by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1521
- docs: merge the duplicated Auto paragraph in localization.md by @Mahmud-Baspehlivan in https://github.com/storytold/pdfcraft/pull/1525
- M0: label local builds in --version, About and the package release by @bmh129 in https://github.com/storytold/pdfcraft/pull/1529
- fix(xfdf): preserve quoted empty CSV values by @webdevtodayjason in https://github.com/storytold/pdfcraft/pull/1541
- Issue #1058: an update keeps the desktop shortcut only if it is still there by @pauliusiv123-rgb in https://github.com/storytold/pdfcraft/pull/1570
- Name the failing option and page count when a chained edit page is out of range (#1550) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/1575
- Fill & Sign: don't show the comment hover popup over placed text (#1504) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/1576
- XFA: a script's time starts when its context is ready, and a value reaches every field bound to its data node by @ysrdevs in https://github.com/storytold/pdfcraft/pull/1589
- Detect rectangular form fields drawn with closed line paths by @FredApps in https://github.com/storytold/pdfcraft/pull/1596
- Fix single-click freehand drawing by @UmbertoCimmino in https://github.com/storytold/pdfcraft/pull/1597
- fix(edit): move existing text by its frame, and selections with the arrow keys by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1600
- fix(ui): keep a closed right panel closed when opening a document by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1603
- M13: Run conversion, OCR and optimization over folder trees by @LabDennis in https://github.com/storytold/pdfcraft/pull/1605
- Telugu interface: draw with an installed Telugu face when the build has none (part of #1531) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1611
- Save: fall back to a plain fsync where a volume refuses the full flush by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1626
- macOS: start on wgpu on Intel Metal by skipping indirect-call validation by @fabian-co in https://github.com/storytold/pdfcraft/pull/1627
- Sanitize suggested attachment save filenames by @FredApps in https://github.com/storytold/pdfcraft/pull/1630
- Security: fix three audit findings in redaction and signature validation by @JeremyYao in https://github.com/storytold/pdfcraft/pull/1631
- M4: Add open documents leaves out the documents already in the Combine list by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1632
- M4: copied pages keep the resources they list only up the page tree by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1635
- Preserve IME composition in command search by @FredApps in https://github.com/storytold/pdfcraft/pull/1638
- XFA: place positioned objects by their anchorType by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1639
- Export all images: CMYK JPEGs keep their colours instead of coming out as negatives by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1642
- CLI: text refuses a document that doesn't allow copying by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1650
- control: cap line length before auth by @SteamSmith in https://github.com/storytold/pdfcraft/pull/1653
- Render: a soft mask shrunk below its size is filtered, so thin strokes drawn through it survive by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1654
- fix(organize): Document Properties also change the XMP title and author by @CouchRiv in https://github.com/storytold/pdfcraft/pull/1658
- M13: Bound automation text caching and preserve partial search results by @LabDennis in https://github.com/storytold/pdfcraft/pull/1492
- fix(ui): a rule skipped by hand stays with its document (#1301) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1445
- fix(ui): ui.click and ui.drag refuse coordinates that overflow (#1306) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1447
- Windows: open a path a launcher passed unquoted and split at its spaces (closes #1455) by @magdale76 in https://github.com/storytold/pdfcraft/pull/1456
- fix(ui): Combine flags the same converted file added twice (#1303) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1458
- fix(text): keep doubled narrow letters in condensed text by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1474
- fix(print): custom pages-per-sheet counts no longer overfill sheets (#1336) by @MrPranklin in https://github.com/storytold/pdfcraft/pull/1430
- fix(ui): the accessibility check keeps a saved page range inside the document (#1300) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1437
- fix(ui): the PDF/A dialog shows a declared PDF/UA (#1309) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1438
- M12: write reviewable tags for text-only PDFs by @earlvanze in https://github.com/storytold/pdfcraft/pull/1440
- Keep undrawn comments and accurate search hits (#1317, #1327, #1302, #1315, #1340) by @bartalos86 in https://github.com/storytold/pdfcraft/pull/1442
- M10: BigTIFF and strict GIF detection in Create PDF; XDP data in format parity by @rp6186030 in https://github.com/storytold/pdfcraft/pull/1453
- M5: keep stamps upright on rotated pages (#1398) by @bartalos86 in https://github.com/storytold/pdfcraft/pull/1460
- M7: keep Arabic ActualText ligatures in their word by @YouseifUS in https://github.com/storytold/pdfcraft/pull/1473
- fix(text): read a TrueType font without an encoding as WinAnsi by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1477
- M3: confirm before opening absolute GoToR paths (#1364) by @srt8hellcat2-ui in https://github.com/storytold/pdfcraft/pull/1489
- M2: keep byte boundaries in packed TIFF-predictor rows by @MMexicann in https://github.com/storytold/pdfcraft/pull/1499
- M4: preserve shared Type 3 glyph resources during extraction by @MMexicann in https://github.com/storytold/pdfcraft/pull/1500
- M13: scan each directory once in CLI checks by @MMexicann in https://github.com/storytold/pdfcraft/pull/1501
- Issue #1396: remove an imported digital ID by @Ridzzz0Alam in https://github.com/storytold/pdfcraft/pull/1515
- M3: draw a GNOME-style title bar on Wayland (#553) by @bmh129 in https://github.com/storytold/pdfcraft/pull/1530
- fix(ui): preserve native open actions and password prompts by @skylartaylor in https://github.com/storytold/pdfcraft/pull/1914
- Pick up craft-print's native Windows printing (#1107) by @jcl-bit in https://github.com/storytold/pdfcraft/pull/1132
- F3: one documented font-substitution chain, and report what it chose and why by @tanish2k09 in https://github.com/storytold/pdfcraft/pull/1622
- M3: drag tabs to reorder them, and Ctrl+Tab to switch between them (#1537, #1542) by @ThatGhost in https://github.com/storytold/pdfcraft/pull/1551
- M10: Sync automation saves before replacing the destination (#1804) by @LabDennis in https://github.com/storytold/pdfcraft/pull/1935
- fix(ui): a file version found before a save is not applied over it (#1802) by @mtlcl410 in https://github.com/storytold/pdfcraft/pull/1943
- M1: a save that doesn't reopen is refused before it replaces the file (#1698) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1730
- @webdevtodayjason made their first contribution in https://github.com/storytold/pdfcraft/pull/1512
- @Mahmud-Baspehlivan made their first contribution in https://github.com/storytold/pdfcraft/pull/1525
- @bmh129 made their first contribution in https://github.com/storytold/pdfcraft/pull/1529
- @UmbertoCimmino made their first contribution in https://github.com/storytold/pdfcraft/pull/1597
- @fabian-co made their first contribution in https://github.com/storytold/pdfcraft/pull/1627
- @CouchRiv made their first contribution in https://github.com/storytold/pdfcraft/pull/1658
- @MrPranklin made their first contribution in https://github.com/storytold/pdfcraft/pull/1430
- @ThatGhost made their first contribution in https://github.com/storytold/pdfcraft/pull/1551
- @mtlcl410 made their first contribution in https://github.com/storytold/pdfcraft/pull/1943
Full Changelog: https://github.com/storytold/pdfcraft/compare/v0.7.1...v0.8.0
PdfCraft v0.7.1
- Adopt shared panel docking with document-aware visibility by @skylartaylor in https://github.com/storytold/pdfcraft/pull/966
- Print: Windows lists its printers and spools jobs by @Mawfyy in https://github.com/storytold/pdfcraft/pull/847
- M10: Windows printing prints at actual size, off the UI thread (follow-up to #847) by @echelon in https://github.com/storytold/pdfcraft/pull/1007
- ci: refactor workflows to use storytold/craft-common-actions by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/1073
- Text extraction: word gaps follow position on the line, not drawing order (#1062) by @pauliusiv123-rgb in https://github.com/storytold/pdfcraft/pull/1074
- M7: watermark offset from the page centre (edit.watermark-appearance) by @Byxis in https://github.com/storytold/pdfcraft/pull/1076
- M12: XFA script time limits start when the engine is ready by @arcanii in https://github.com/storytold/pdfcraft/pull/1081
- Linux: draw on the GPU the Wayland compositor draws with by @atoslins in https://github.com/storytold/pdfcraft/pull/1088
- doc_create from text refuses characters Helvetica can't draw (#959) by @sibrash4 in https://github.com/storytold/pdfcraft/pull/1030
- Linux: StartupWMClass is the window's app id by @atoslins in https://github.com/storytold/pdfcraft/pull/1087
- M4, #569: Combine files takes images and text files by @mlkonrad in https://github.com/storytold/pdfcraft/pull/1032
- Return renderer initialization errors to the OpenGL startup fallback by @huferyliu in https://github.com/storytold/pdfcraft/pull/1042
- Forms: encode appearances with the existing simple font by @piero-83 in https://github.com/storytold/pdfcraft/pull/1044
- Forms: keep the accepted value when Tab wraps to the same field by @piero-83 in https://github.com/storytold/pdfcraft/pull/1045
- CLI: reject malformed --root options before dispatch by @piero-83 in https://github.com/storytold/pdfcraft/pull/1048
- Edit images: moving or resizing a clipped image moves its own clip too (#1022) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/1049
- M2: stream page content past the 256 MiB cap (item 1 of storytold/pdfcraft#623) by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/797
- XFA: single-block forms paginate, open in their saved state, and show their signatures by @EULArule in https://github.com/storytold/pdfcraft/pull/1098
- UI: a tool chosen with no document open asks for a file and runs on it by @michelleDeko in https://github.com/storytold/pdfcraft/pull/1100
- M14: Enumerate form fields once on open by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/1011
- Top bar: the Save button names its shortcut instead of "(M4)" (#962) by @DWAA1660 in https://github.com/storytold/pdfcraft/pull/1013
- M14: correct Taiwan Traditional Chinese accessibility and form terms by @MaxTheHaters in https://github.com/storytold/pdfcraft/pull/1023
- M10: Enhance camera image finds the document's edges; rotate, crop or organize after Enhance page (part 3 of #1008) by @magdale76 in https://github.com/storytold/pdfcraft/pull/1027
- M9: stream structure-tree checks without a total-element cutoff by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/926
- fix(macos): close the empty main window with Command-W by @Ni-zav in https://github.com/storytold/pdfcraft/pull/930
- fix(xfdf): combine imported annotation flags with bitwise OR by @Ni-zav in https://github.com/storytold/pdfcraft/pull/931
- feat(macos): declare document icon file for PDFs in Info.plist by @Totopo27 in https://github.com/storytold/pdfcraft/pull/933
- macOS: the tab strip is the 28 pt band the traffic lights are centred in (#789) by @ch0kemeister in https://github.com/storytold/pdfcraft/pull/1055
- Issues #444, #186: a mouse wheel scroll speed preference, faster by default on Windows and Linux by @AutoHenry in https://github.com/storytold/pdfcraft/pull/514
- fix(ui): bookmark, comment and command filters match Turkish İ/ı in any case by @snipeTR in https://github.com/storytold/pdfcraft/pull/937
- fix(annot): create mailto links for bare email addresses by @Ni-zav in https://github.com/storytold/pdfcraft/pull/941
- Fix/noissue hyphenated print label ranges s20261010 t220019 z f82d4 by @Ni-zav in https://github.com/storytold/pdfcraft/pull/942
- macOS: "Reopen the files that were open" starts from the system reopen-windows setting (#871) by @ch0kemeister in https://github.com/storytold/pdfcraft/pull/1053
- Keep Border and Fill color palettes independent in field Properties by @sanyamsingh001 in https://github.com/storytold/pdfcraft/pull/1054
- M2, #1060: axial and radial shadings draw as native gradients (InDesign fades 10× faster) by @mlkonrad in https://github.com/storytold/pdfcraft/pull/1061
- UI: theme picker with light and dark theme cards by @luniiya in https://github.com/storytold/pdfcraft/pull/1082
- Docs: sync the progress docs with issues closed on 2026-10-10 by @Ridzzz0Alam in https://github.com/storytold/pdfcraft/pull/1064
- Fix plural forms for recent document page counts by @neronek22 in https://github.com/storytold/pdfcraft/pull/1065
- Read mode: the rail's Bookmarks and other pane buttons open their panels (#932) by @DWAA1660 in https://github.com/storytold/pdfcraft/pull/947
- Issue #948: the root-confinement test tries the symbolic-link escape only when the link was made by @pauliusiv123-rgb in https://github.com/storytold/pdfcraft/pull/949
- fix(measure): include closing edges of every filled PDF subpath by @Ni-zav in https://github.com/storytold/pdfcraft/pull/952
- demo-pdf: two fixes so xtask demo-pdf and xtask screenshots work on Windows by @pechnikov2026-star in https://github.com/storytold/pdfcraft/pull/954
- M7: shard Japanese Type 3 fallback fonts across large edits by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/958
- Typed signatures draw Cyrillic and Greek letters (#846) by @DWAA1660 in https://github.com/storytold/pdfcraft/pull/963
- M7: shard Arabic generated glyph fonts instead of rejecting large text by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/967
- M9: sign with CAC/PIV smart cards through the macOS Keychain by @sfv9 in https://github.com/storytold/pdfcraft/pull/968
- M10: stream Create Multiple sources without a fixed file-count cutoff by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/978
- M11: strip redundant ASCII stream wrappers during optimization by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/989
- text_find stops reading pages once its limit is reached (#971) by @DWAA1660 in https://github.com/storytold/pdfcraft/pull/990
- M14: a chosen interface size is absolute, as in PhotoCraft by @mitul72 in https://github.com/storytold/pdfcraft/pull/1005
- docs(ocr): add model download step to build instructions by @mjohnson7cd in https://github.com/storytold/pdfcraft/pull/1006
- M2: keep non-interpolated minified images sharp by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/635
- docs: register the MCP server from an installed release by @sawizzle in https://github.com/storytold/pdfcraft/pull/643
- M12: add deterministic snap property tests to the measure crate by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/714
- Windows: Save asks where to keep an Outlook attachment instead of writing its temporary copy by @art804 in https://github.com/storytold/pdfcraft/pull/601
- Chinese UI: draw with an installed Chinese face when the build has none (#826) by @YingQiu0871 in https://github.com/storytold/pdfcraft/pull/925
- fix(ui): preserve scroll position when collapsing or resizing sidebars (#1056) by @omarelders in https://github.com/storytold/pdfcraft/pull/1069
- render: don't let a hostile page-tree /Count abort inspection by @pechnikov2026-star in https://github.com/storytold/pdfcraft/pull/956
- xfa, xfdf: refuse XML nested past 1024 levels instead of aborting the process by @pkibiego in https://github.com/storytold/pdfcraft/pull/987
- M2: overlapping text runs stay whole; placement in arrange, bounded checks by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/748
- pt-BR: lowercase month names in the date picker by @WladmirJunior in https://github.com/storytold/pdfcraft/pull/1089
- M9: visible digital signatures can show a drawn, typed or image graphic (#193) by @kestrel99 in https://github.com/storytold/pdfcraft/pull/934
- Issue #568: honour the document's copy permission (Table 22, bit 5) by @jay-tau in https://github.com/storytold/pdfcraft/pull/914
- Viewer: Continuous scrolling is an independent checkbox over the base layout (#752) by @justinjohn0306 in https://github.com/storytold/pdfcraft/pull/896
- M4: open Organize Pages as a selectable thumbnail overview by @lukashold in https://github.com/storytold/pdfcraft/pull/1004
- Add an opt-in low-disk Cargo profile by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/951
- Select tool: trigger multi-click text selection on pointer press (#1024) by @krinry in https://github.com/storytold/pdfcraft/pull/1040
- M14: scan PdfCraft page-content markers once per document refresh by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/1016
- Open dialog: allow selecting several files at once by @LucasT-dev in https://github.com/storytold/pdfcraft/pull/1086
- Issue #431: reload a document when its file changes on disk by @pauliusiv123-rgb in https://github.com/storytold/pdfcraft/pull/459
- fix(annot): validate finite link areas before add or edit by @Ni-zav in https://github.com/storytold/pdfcraft/pull/940
- Add faux-redaction audit (paint-order and colour-aware, fail-closed) by @ejbarraza in https://github.com/storytold/pdfcraft/pull/110
- fix(ui): prevent translated tool labels from overflowing and align German terminology by @Ni-zav in https://github.com/storytold/pdfcraft/pull/939
- chore: bump github actions to fix Node 20 deprecation warnings by @dylanmtaylor in https://github.com/storytold/pdfcraft/pull/641
- On-page text boxes keep a dark caret on their white backgrounds in the dark theme (#655) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/734
- Render visible pages before thumbnails and text extraction by @gyurix in https://github.com/storytold/pdfcraft/pull/950
- Print: start PowerShell on Windows by its full path by @jcl-bit in https://github.com/storytold/pdfcraft/pull/1106
- Comments: line breaks saved as CR show in comment text by @nicholasyoannou in https://github.com/storytold/pdfcraft/pull/1113
- Cap unbounded editing and text caches; index form fields once by @chiranjeevi-max in https://github.com/storytold/pdfcraft/pull/1115
- Fix text selection cursor on all tools toggle(View More - View Less Button) by @oussama-dalhi in https://github.com/storytold/pdfcraft/pull/1121
- Print: architectural paper presets and PDF scale controls (#599 follow-up) by @durtyrobbin in https://github.com/storytold/pdfcraft/pull/1123
- M10: Enhance camera image cleans the photo up and chooses its look (part 4 of #1008, closes #1034) by @magdale76 in https://github.com/storytold/pdfcraft/pull/1038
- Security: fix 10 verified audit findings in redaction, signature validation, and untrusted-input handling by @JeremyYao in https://github.com/storytold/pdfcraft/pull/1099
- feat: Scale down large signature images instead of rejecting (#1075) by @mjohnson7cd in https://github.com/storytold/pdfcraft/pull/1124
- Forms: keep tiles and render unbaked field values during page re-render by @Piohrun in https://github.com/storytold/pdfcraft/pull/636
- Issue #995 & #1077: unlock a restricted document with its permissions password by @Ridzzz0Alam in https://github.com/storytold/pdfcraft/pull/1127
- Tests: consolidate safe ui-egui integration targets by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/992
- fix(theme): complete Linux System appearance tracking by @coygeek in https://github.com/storytold/pdfcraft/pull/1017
- Issue #432: global Units preference (mm, cm, in, pt), defaulting to the system region by @bulgariamitko in https://github.com/storytold/pdfcraft/pull/463
- Give dialogs roomier text fields and padding by @bartalos86 in https://github.com/storytold/pdfcraft/pull/487
- i18n: let the layers below hand their sentences over, so they can be translated by @feraremag2680 in https://github.com/storytold/pdfcraft/pull/478
- Improve PDF Navigation with Cursor-Anchored Zoom and Mouse Panning by @mhadidi06 in https://github.com/storytold/pdfcraft/pull/504
- M14: complete the Czech (cs) interface catalog by @Losminek in https://github.com/storytold/pdfcraft/pull/1066
- M14: Italian catalog review: meaning, agreement, consistency (47 entries) by @magdale76 in https://github.com/storytold/pdfcraft/pull/1025
- M14: Slovenian (Slovenščina) interface language by @spacekomet in https://github.com/storytold/pdfcraft/pull/1091
- Add Greek (el) interface localization by @Camthalion77 in https://github.com/storytold/pdfcraft/pull/994
- M14: Kazakh interface language by @pechnikov2026-star in https://github.com/storytold/pdfcraft/pull/955
- feat(i18n): add complete Turkish interface language support by @yeniufuklar-com in https://github.com/storytold/pdfcraft/pull/1057
- Content edits on heavy documents: narrow refresh, cached appearances, per-page invalidation by @MaksPV in https://github.com/storytold/pdfcraft/pull/1122
- M7: Hebrew in Edit text (reading order, writing order, Hebrew glyphs) by @tzagim in https://github.com/storytold/pdfcraft/pull/521
- Heavy pages: cull off-tile images, cache decodes, preview backdrops, calmer queues by @MaksPV in https://github.com/storytold/pdfcraft/pull/1117
- M14: text the fonts can't draw is kept and reported, never written as ? silently by @kekeandzeyu in https://github.com/storytold/pdfcraft/pull/1112
- M7: support shaped Thai text in Add Text and UI fallback fonts by @PuemMTH in https://github.com/storytold/pdfcraft/pull/767
- M7: preserve overlapping text when dragging paragraphs (#594) by @FredApps in https://github.com/storytold/pdfcraft/pull/1052
- Bound materialized text search matches (#971) by @rp6186030 in https://github.com/storytold/pdfcraft/pull/1164
- XFA: import and export data files, and pictures for image fields by @ysrdevs in https://github.com/storytold/pdfcraft/pull/1175
- docs(contributors): add Ufuk Efe to people.toml by @yeniufuklar-com in https://github.com/storytold/pdfcraft/pull/1177
- Issue #1185: Protect refuses passwords that encryption would make empty or equal by @jay-tau in https://github.com/storytold/pdfcraft/pull/1186
- M14: keep structural page order through inspection by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/1182
- Raise workspace rust-version to 1.95 to match the UI crate (#1169) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/1188
- M5: preserve comment identities during partial XFDF and FDF imports by @MMexicann in https://github.com/storytold/pdfcraft/pull/1144
- Test PDF viewer trackpad pinch zoom by @earlvanze in https://github.com/storytold/pdfcraft/pull/1148
- M4: replace selected pages from organize toolbar and context menus (#786) by @Hathor875 in https://github.com/storytold/pdfcraft/pull/1149
- UI: checkboxes and radio buttons are outlined, and checkboxes are square by @Toddpe in https://github.com/storytold/pdfcraft/pull/1173
- M14: "Edit with PdfCraft" on the File Explorer menu of PDF files (#682) by @jcl-bit in https://github.com/storytold/pdfcraft/pull/1180
- M2: bound the total size of page-label prefixes by @ymote in https://github.com/storytold/pdfcraft/pull/1146
- Windows printing: two-sided binds on the chosen edge; note drivers that ignore Two-sided by @bulgariamitko in https://github.com/storytold/pdfcraft/pull/1154
- Issue #1028: OCR can read pictures on pages that already have text by @rp6186030 in https://github.com/storytold/pdfcraft/pull/1184
- M14: choose Tools panel side in Preferences by @earlvanze in https://github.com/storytold/pdfcraft/pull/1130
- Show annotation actions beside selected text by @earlvanze in https://github.com/storytold/pdfcraft/pull/1133
- i18n(es): add 84 missing rows, consistent tú register by @diegozpy in https://github.com/storytold/pdfcraft/pull/1134
- Linux: prefer server DPI over panel physical DPI in vendored winit by @gyurix in https://github.com/storytold/pdfcraft/pull/1150
- M2: keep doubled short text runs from interleaving by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/1198
- docs: sync Earl Co contributor name from GitHub by @earlvanze in https://github.com/storytold/pdfcraft/pull/1199
- Accessibility: identify structure objects in checker findings by @earlvanze in https://github.com/storytold/pdfcraft/pull/1207
- Accessibility: edit structure tag properties through tools by @earlvanze in https://github.com/storytold/pdfcraft/pull/1210
- Accessibility: export before-and-after review record by @earlvanze in https://github.com/storytold/pdfcraft/pull/1204
- M10.5: Adopt craft-print spooler with Windows printing fixes by @skylartaylor in https://github.com/storytold/pdfcraft/pull/1015
- Preserve source fonts in text editing and resize clipped artwork by @komo1iddin in https://github.com/storytold/pdfcraft/pull/1116
- Polish chrome hover, press, and selection by @bartalos86 in https://github.com/storytold/pdfcraft/pull/457
- Edit text: support Devanagari system font fallback and Indic pre-base matra reordering by @krinry in https://github.com/storytold/pdfcraft/pull/1033
- Fix Word invoice layout and pagination (#773) by @lollinoo in https://github.com/storytold/pdfcraft/pull/1126
- M5.7: Fill & Sign Scan tab for photographed signatures (#1110) by @Bjorneseth in https://github.com/storytold/pdfcraft/pull/1111
- M4: rename colliding form field names when combining (organize.field-name-conflicts) by @edurbs in https://github.com/storytold/pdfcraft/pull/1155
- M10: Create separate PDFs from multiple files by @earlvanze in https://github.com/storytold/pdfcraft/pull/1183
- Comments panel: show Persian and Arabic comments in reading order (#1079) by @itrycodinganditsbad in https://github.com/storytold/pdfcraft/pull/1138
- M10: Presentation (.pptx) export (#1137) by @Hathor875 in https://github.com/storytold/pdfcraft/pull/1162
- Add editable page-range selection to Organize Pages (#1092) by @DWAA1660 in https://github.com/storytold/pdfcraft/pull/1174
- M14: edits let go of the previous working file before writing the next (gap 13) by @rp6186030 in https://github.com/storytold/pdfcraft/pull/1279
- Accessibility: show figure findings on the page by @earlvanze in https://github.com/storytold/pdfcraft/pull/1280
- Fix viewport jitter when annotating with search active (#1254) by @omarelders in https://github.com/storytold/pdfcraft/pull/1283
- Automation tests: isolate workdirs by call site by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/1223
- M0: validate the committed parity manifest in xtask tests by @srt8hellcat2-ui in https://github.com/storytold/pdfcraft/pull/1214
- M7: report unsupported document link actions accurately by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/1242
- M5: Insert text snaps its caret to the text (#345) by @diegozpy in https://github.com/storytold/pdfcraft/pull/1249
- Accessibility: compare checker results after each recheck by @earlvanze in https://github.com/storytold/pdfcraft/pull/1250
- M5: quick-bar colour recolours the selected comment (#1191) by @rp6186030 in https://github.com/storytold/pdfcraft/pull/1255
- Redaction: add case-sensitive and whole-word search options by @earlvanze in https://github.com/storytold/pdfcraft/pull/1258
- control: close the connection on malformed input before auth by @SteamSmith in https://github.com/storytold/pdfcraft/pull/1259
- M10.5: load driver options for CUPS printer instances by @srt8hellcat2-ui in https://github.com/storytold/pdfcraft/pull/1226
- Units: read the Windows measurement system from the registry, not reg.exe by @jcl-bit in https://github.com/storytold/pdfcraft/pull/1227
- Accessibility: reorder sibling structure tags through an undoable tool by @earlvanze in https://github.com/storytold/pdfcraft/pull/1229
- Accessibility: export before-and-after review as HTML by @earlvanze in https://github.com/storytold/pdfcraft/pull/1234
- Refine Greek localization and May abbreviation by @Camthalion77 in https://github.com/storytold/pdfcraft/pull/1262
- Resize exclusive image crops across nested states and content streams by @komo1iddin in https://github.com/storytold/pdfcraft/pull/1269
- honour the /Lab colour space /WhitePoint (#1203) by @Hathor875 in https://github.com/storytold/pdfcraft/pull/1237
- Accessibility: persist human review decisions for an exact PDF revision by @earlvanze in https://github.com/storytold/pdfcraft/pull/1239
- Accessibility: add visual tag properties panel by @earlvanze in https://github.com/storytold/pdfcraft/pull/1216
- M10: print from the web build through the browser's print dialog (gap 4) by @rp6186030 in https://github.com/storytold/pdfcraft/pull/1243
- M7: open local GoToR PDF links natively by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/1265
- M3: follow Windows' Animation effects setting; add an Animation effects preference by @JeremyYao in https://github.com/storytold/pdfcraft/pull/1235
- Reading colours: replace document colours for reading comfort (#897) by @edurbs in https://github.com/storytold/pdfcraft/pull/1270
- Accessibility: keep manual review visible in checker summaries by @earlvanze in https://github.com/storytold/pdfcraft/pull/1224
- Tests: normalize generated streams in Arabic output golden by @earlvanze in https://github.com/storytold/pdfcraft/pull/1275
- Comments: "Other colour…" picker and recent custom colours under the swatches (#1193) by @ngrafton2006 in https://github.com/storytold/pdfcraft/pull/1261
- M3: add PDF tab context menu (fixes #1233) by @srt8hellcat2-ui in https://github.com/storytold/pdfcraft/pull/1266
- M14: tune Windows low-DPI JetBrains Mono hinting by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/1264
- Text extraction: honour /ActualText, so Thai from Chrome PDFs is searchable by @git-monchiant in https://github.com/storytold/pdfcraft/pull/1217
- feat(edit): remove all links command and context menu (#539) by @Hathor875 in https://github.com/storytold/pdfcraft/pull/1213
- M12: say when a form's scripts were turned off by @arcanii in https://github.com/storytold/pdfcraft/pull/1251
- XFA: one script thread per event, and the live form kept up to date in place by @ysrdevs in https://github.com/storytold/pdfcraft/pull/1355
- xtask: stop headless Chrome leaving macOS code-sign clones (#1196) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/1292
- Issue #1296: hayro-syntax applies SASLprep to AES-256 passwords (PdfCraft patch 16) by @jay-tau in https://github.com/storytold/pdfcraft/pull/1345
- M3: match Greek final sigma in case-insensitive search by @nevicia2010-hub in https://github.com/storytold/pdfcraft/pull/1349
- Clean form tag references by @not-a-feature in https://github.com/storytold/pdfcraft/pull/1351
- M12: accept literal digits in date formats (dd.mm.26) by @aparcar in https://github.com/storytold/pdfcraft/pull/1352
- CI: keep craft-fonts enabled across Linux Rust gates by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/1284
- CI: run dependency layering once per workflow by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/1286
- CI: keep line tables instead of full workspace debug info by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/1298
- test(cli): reject unknown MCP options by @mhmdeve in https://github.com/storytold/pdfcraft/pull/1342
- Refine search match selection and text failure jitter handling by @omarelders in https://github.com/storytold/pdfcraft/pull/1291
- Fill & Sign: choose text and date font size by @earlvanze in https://github.com/storytold/pdfcraft/pull/1285
- fix(xfdf): text data from a one-field form keeps its commas (#1321) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1371
- CLI: audit rejects unknown options before reading the file (fixes #1332) by @umesh429 in https://github.com/storytold/pdfcraft/pull/1372
- fix(preflight): find colour operators after any PDF whitespace (#1334) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1373
- fix(sign): a signature field with a null /V can be signed by name (#1328) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1374
- fix(redact): removing comments keeps non-comment annotations (#1325) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1375
- fix(print): refuse huge posters at the sheet limit instead of overflowing (#1335) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1376
- M7: preserve Arabic text order in copy, search and editing by @YouseifUS in https://github.com/storytold/pdfcraft/pull/1369
- M2: snap shrunk interpolated images to whole pixels so scans stay sharp by @philip-tam in https://github.com/storytold/pdfcraft/pull/1377
- M14: Preserve recovery snapshots without readable metadata by @LabDennis in https://github.com/storytold/pdfcraft/pull/1378
- fix(fonts): a composite /W run past the last CID stops there (#1313) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1389
- fix(ui): the Fields panel lists a field on a missing page as unplaced (#1307) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1390
- fix(automation): content_update refuses text styling on an image (#1331) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1391
- fix(forms): a whole look keeps the rest of an indirect /MK (#1322) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1392
- fix(forms): a literal Off value reads as Off outside buttons (#1320) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1393
- fix(fonts): a /Differences code past 255 no longer encodes as its last byte (#1314) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1394
- Issue #1368: keep text a dragged paragraph passed over by @Ridzzz0Alam in https://github.com/storytold/pdfcraft/pull/1381
- M7: Preserve explicit page ranges across dialog redraws (#1304) by @LabDennis in https://github.com/storytold/pdfcraft/pull/1382
- M3: select an image on the page and copy it by @FrancescoClemeno in https://github.com/storytold/pdfcraft/pull/1363
- fix(cli): edit refuses move/insert destinations past the end (#1330) by @umesh429 in https://github.com/storytold/pdfcraft/pull/1400
- fix(sign): refuse to sign a field whose /V is not a signature (#1328) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1402
- fix(forms): keep a whitespace-only value in a text field without a format (#1323) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1403
- fix(content): skip an inline image with an unreadable key to its EI (#1318) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1404
- fix(automation): doc_save reports a required full rewrite as not incremental (#1329) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1405
- fix(audit): an identity cm between re and fill no longer hides a cover (#1333) by @umesh429 in https://github.com/storytold/pdfcraft/pull/1410
- fix(ui): Current page prints the viewed page, not a page labelled with its number (#1308) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1411
- fix(render): draw Turkish Ğ İ Ş ğ ş in non-embedded fonts by @TheLastRoadRunner in https://github.com/storytold/pdfcraft/pull/1409
- M10: edit OCR text on scanned pages so the change shows by @TanguAchilis in https://github.com/storytold/pdfcraft/pull/1397
- Edit text: support per-font visual-order Indic text and nukta reordering by @krinry in https://github.com/storytold/pdfcraft/pull/1380
- M12: preview text structure proposals for auto-tagging by @earlvanze in https://github.com/storytold/pdfcraft/pull/1383
- M10: Test current-page print previews and saved output by @LabDennis in https://github.com/storytold/pdfcraft/pull/1415
- fix(content): count an unreadable inline image with no EI as skipped (#1318) by @marcoarnulfo in https://github.com/storytold/pdfcraft/pull/1418
- feat(ui): add command palette arrow-key navigation by @Morpheus004 in https://github.com/storytold/pdfcraft/pull/1419
- M4: Fix Combine duplicate warnings and cache their computation by @LabDennis in https://github.com/storytold/pdfcraft/pull/1420
- feat(preflight): verify image resolution and bleed without rewriting the file by @Baltsar in https://github.com/storytold/pdfcraft/pull/1408
- M14: add Lithuanian interface and date localization by @tdslot in https://github.com/storytold/pdfcraft/pull/1401
- M1: write a valid xref when an incremental save has no objects (#1339) by @bartalos86 in https://github.com/storytold/pdfcraft/pull/1424
- Release workflow: pass the Azure signing secrets by @echelon in https://github.com/storytold/pdfcraft/pull/1194
- @dylanmtaylor made their first contribution in https://github.com/storytold/pdfcraft/pull/1073
- @arcanii made their first contribution in https://github.com/storytold/pdfcraft/pull/1081
- @atoslins made their first contribution in https://github.com/storytold/pdfcraft/pull/1088
- @sibrash4 made their first contribution in https://github.com/storytold/pdfcraft/pull/1030
- @huferyliu made their first contribution in https://github.com/storytold/pdfcraft/pull/1042
- @piero-83 made their first contribution in https://github.com/storytold/pdfcraft/pull/1044
- @EULArule made their first contribution in https://github.com/storytold/pdfcraft/pull/1098
- @michelleDeko made their first contribution in https://github.com/storytold/pdfcraft/pull/1100
- @MaxTheHaters made their first contribution in https://github.com/storytold/pdfcraft/pull/1023
- @magdale76 made their first contribution in https://github.com/storytold/pdfcraft/pull/1027
- @Totopo27 made their first contribution in https://github.com/storytold/pdfcraft/pull/933
- @luniiya made their first contribution in https://github.com/storytold/pdfcraft/pull/1082
- @Ridzzz0Alam made their first contribution in https://github.com/storytold/pdfcraft/pull/1064
- @neronek22 made their first contribution in https://github.com/storytold/pdfcraft/pull/1065
- @pechnikov2026-star made their first contribution in https://github.com/storytold/pdfcraft/pull/954
- @sfv9 made their first contribution in https://github.com/storytold/pdfcraft/pull/968
- @mjohnson7cd made their first contribution in https://github.com/storytold/pdfcraft/pull/1006
- @sawizzle made their first contribution in https://github.com/storytold/pdfcraft/pull/643
- @art804 made their first contribution in https://github.com/storytold/pdfcraft/pull/601
- @YingQiu0871 made their first contribution in https://github.com/storytold/pdfcraft/pull/925
- @omarelders made their first contribution in https://github.com/storytold/pdfcraft/pull/1069
- @pkibiego made their first contribution in https://github.com/storytold/pdfcraft/pull/987
- @WladmirJunior made their first contribution in https://github.com/storytold/pdfcraft/pull/1089
- @kestrel99 made their first contribution in https://github.com/storytold/pdfcraft/pull/934
- @lukashold made their first contribution in https://github.com/storytold/pdfcraft/pull/1004
- @krinry made their first contribution in https://github.com/storytold/pdfcraft/pull/1040
- @LucasT-dev made their first contribution in https://github.com/storytold/pdfcraft/pull/1086
- @ejbarraza made their first contribution in https://github.com/storytold/pdfcraft/pull/110
- @nicholasyoannou made their first contribution in https://github.com/storytold/pdfcraft/pull/1113
- @durtyrobbin made their first contribution in https://github.com/storytold/pdfcraft/pull/1123
- @JeremyYao made their first contribution in https://github.com/storytold/pdfcraft/pull/1099
- @Piohrun made their first contribution in https://github.com/storytold/pdfcraft/pull/636
- @coygeek made their first contribution in https://github.com/storytold/pdfcraft/pull/1017
- @mhadidi06 made their first contribution in https://github.com/storytold/pdfcraft/pull/504
- @Losminek made their first contribution in https://github.com/storytold/pdfcraft/pull/1066
- @spacekomet made their first contribution in https://github.com/storytold/pdfcraft/pull/1091
- @Camthalion77 made their first contribution in https://github.com/storytold/pdfcraft/pull/994
- @yeniufuklar-com made their first contribution in https://github.com/storytold/pdfcraft/pull/1057
- @tzagim made their first contribution in https://github.com/storytold/pdfcraft/pull/521
- @kekeandzeyu made their first contribution in https://github.com/storytold/pdfcraft/pull/1112
- @PuemMTH made their first contribution in https://github.com/storytold/pdfcraft/pull/767
- @FredApps made their first contribution in https://github.com/storytold/pdfcraft/pull/1052
- @rp6186030 made their first contribution in https://github.com/storytold/pdfcraft/pull/1164
- @MMexicann made their first contribution in https://github.com/storytold/pdfcraft/pull/1144
- @earlvanze made their first contribution in https://github.com/storytold/pdfcraft/pull/1148
- @ymote made their first contribution in https://github.com/storytold/pdfcraft/pull/1146
- @diegozpy made their first contribution in https://github.com/storytold/pdfcraft/pull/1134
- @komo1iddin made their first contribution in https://github.com/storytold/pdfcraft/pull/1116
- @lollinoo made their first contribution in https://github.com/storytold/pdfcraft/pull/1126
- @Bjorneseth made their first contribution in https://github.com/storytold/pdfcraft/pull/1111
- @itrycodinganditsbad made their first contribution in https://github.com/storytold/pdfcraft/pull/1138
- @srt8hellcat2-ui made their first contribution in https://github.com/storytold/pdfcraft/pull/1214
- @SteamSmith made their first contribution in https://github.com/storytold/pdfcraft/pull/1259
- @ngrafton2006 made their first contribution in https://github.com/storytold/pdfcraft/pull/1261
- @git-monchiant made their first contribution in https://github.com/storytold/pdfcraft/pull/1217
- @nevicia2010-hub made their first contribution in https://github.com/storytold/pdfcraft/pull/1349
- @not-a-feature made their first contribution in https://github.com/storytold/pdfcraft/pull/1351
- @aparcar made their first contribution in https://github.com/storytold/pdfcraft/pull/1352
- @mhmdeve made their first contribution in https://github.com/storytold/pdfcraft/pull/1342
- @marcoarnulfo made their first contribution in https://github.com/storytold/pdfcraft/pull/1371
- @umesh429 made their first contribution in https://github.com/storytold/pdfcraft/pull/1372
- @YouseifUS made their first contribution in https://github.com/storytold/pdfcraft/pull/1369
- @philip-tam made their first contribution in https://github.com/storytold/pdfcraft/pull/1377
- @LabDennis made their first contribution in https://github.com/storytold/pdfcraft/pull/1378
- @FrancescoClemeno made their first contribution in https://github.com/storytold/pdfcraft/pull/1363
- @TheLastRoadRunner made their first contribution in https://github.com/storytold/pdfcraft/pull/1409
- @TanguAchilis made their first contribution in https://github.com/storytold/pdfcraft/pull/1397
- @Morpheus004 made their first contribution in https://github.com/storytold/pdfcraft/pull/1419
- @Baltsar made their first contribution in https://github.com/storytold/pdfcraft/pull/1408
- @tdslot made their first contribution in https://github.com/storytold/pdfcraft/pull/1401
Full Changelog: https://github.com/storytold/pdfcraft/compare/v0.6.0...v0.7.1
PdfCraft v0.6.0
- M3: tiles skip paths that can't paint them (item 5 of #623) by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/670
- M3: harden render and CLI failure surfaces by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/669
- Print: list driverless CUPS destinations, not only permanent queues by @edurbs in https://github.com/storytold/pdfcraft/pull/658
- Wayland: IME keeps working after a seat loses a capability (winit#4747) by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/672
- Windows: the Korean IME composition caret sits after the syllable (winit#4746) by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/673
- Windows: a window closed maximized reopens without a white flash (winit#4587) by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/674
- X11: the input method follows the text field that has focus (winit#4727) by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/675
- macOS: IME text committed after the marked text is cleared isn't lost (winit#4650) by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/676
- macOS: an unfinished composition doesn't come back in the next text field (winit#4745) by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/677
- macOS: emoji from the emoji picker reach text fields (winit#4749) by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/678
- macOS: Space in Apple Korean with no syllable in progress types one space (winit#4478) by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/679
- macOS: the first Apple Korean key in a fresh PdfCraft composes (winit#4744) by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/680
- M3: document why fixed-zoom sizes differ from Acrobat (no runtime change) by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/736
- Desktop: log renderer details for display-scaling diagnosis by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/726
- M7: normalize PDF font descriptor flags to u32 by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/700
- About dialog test: wait for each control to stop moving before clicking it (#671) by @DWAA1660 in https://github.com/storytold/pdfcraft/pull/703
- M3: cover suspended raster resource ownership by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/733
- M4: audit that undo and redo never replay field scripts by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/713
- M2: pin output across worker counts by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/705
- M2: cover inherited form resource contexts by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/707
- M6: reject out-of-domain field flags by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/701
- M5: unify annotation flag parsing by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/698
- M3: make multi-document raster allowance test deterministic by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/723
- Sign: long digital ID names stay inside the picker by @mmmaarian03-crypto in https://github.com/storytold/pdfcraft/pull/743
- Issue #727: tell the user when GitHub rate-limits update checks by @ShauryaSwarup in https://github.com/storytold/pdfcraft/pull/731
- M2: decouple content tokenization from slices by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/706
- M2: key soft-mask cache by inherited resource context by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/716
- create: lift TIFF decoding buffer limit to allow print-sized images (#665) by @Hathor875 in https://github.com/storytold/pdfcraft/pull/681
- Windows: declare Per-Monitor V2 DPI awareness in the executable manifest by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/725
- CI: require Windows executable resources in Windows builds by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/724
- Close the command palette on outside click by @oussama-dalhi in https://github.com/storytold/pdfcraft/pull/696
- M2: cover form recursion cycles by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/709
- M3: test stitched render partitions against whole-page output by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/697
- M2: cover tiling pattern recursion cycles and finite nesting by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/710
- M5: preserve strokes with malformed interior colors by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/708
- Sign: decide Windows store keys in code every platform builds (follow-up to #646) by @jcl-bit in https://github.com/storytold/pdfcraft/pull/690
- Issue #666: images made into a PDF keep their ICC profile by @LloydNicholson in https://github.com/storytold/pdfcraft/pull/729
- M14: side panels keep their width after a resize by @Toddpe in https://github.com/storytold/pdfcraft/pull/704
- Sign: smart cards and tokens in the Windows store ask for their PIN (#694) by @mmmaarian03-crypto in https://github.com/storytold/pdfcraft/pull/742
- M2: pages with /UserUnit are shown at their size in points, as in Acrobat by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/722
- M2: text turned at any angle reads as lines along its own baseline by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/735
- M2: cancel obsolete in-flight requests by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/702
- PDF/A: no sRGB output intent for CMYK documents, and pdfa_verify checks the intent's colour space (#667) by @DWAA1660 in https://github.com/storytold/pdfcraft/pull/732
- Windows: single instance, launches started together share one window (#282, #317) by @benimaru327 in https://github.com/storytold/pdfcraft/pull/715
- M8: redaction code sets (U.S. FOIA, Privacy Act) as overlay text by @bartalos86 in https://github.com/storytold/pdfcraft/pull/741
- M14: View menu, tooltips and Keyboard shortcuts show Ctrl, not ⌘, off macOS by @Toddpe in https://github.com/storytold/pdfcraft/pull/695
- M14: Arabic interface language by @abdelhaqelamraoui in https://github.com/storytold/pdfcraft/pull/692
- M4: keep the render pool across metadata edits by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/750
- M9: the signer's certificate must allow document signing (key usage, EKU, critical extensions) by @bartalos86 in https://github.com/storytold/pdfcraft/pull/749
- M9: sign and timestamp encrypted documents by @silverhadch in https://github.com/storytold/pdfcraft/pull/753
- Extract pages: a File name field names the extracted files (#737) by @DWAA1660 in https://github.com/storytold/pdfcraft/pull/751
- M4: bookmarks from tagged headings (organize.bookmarks-from-structure) by @bartalos86 in https://github.com/storytold/pdfcraft/pull/754
- M8: redact lists of words or phrases (protect.redact-word-lists) by @bartalos86 in https://github.com/storytold/pdfcraft/pull/757
- M3: make render watchdog regressions deterministic by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/699
- Progress docs: re-measure against Acrobat Pro 26.002, adopt the progress-docs standard by @echelon in https://github.com/storytold/pdfcraft/pull/873
- Measure: snap to the implicit closing edge of filled paths (#803) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/862
- fix(organize): reject rotation angles that are not multiples of 90 (#801) by @muraa-p in https://github.com/storytold/pdfcraft/pull/833
- Autosave: snapshot a new unsaved document before its first edit (#815) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/850
- OCR: Recognize text in multiple files refuses paths outside the root by @mlkonrad in https://github.com/storytold/pdfcraft/pull/795
- fix(text): match phrases across repeated whitespace (#814) by @muraa-p in https://github.com/storytold/pdfcraft/pull/831
- fix(edit): keep a comment whose appearance is missing when flattening (#805) by @muraa-p in https://github.com/storytold/pdfcraft/pull/838
- fix(comments): keep a reply to a reply in the comment listing (#806) by @muraa-p in https://github.com/storytold/pdfcraft/pull/839
- Issue #774: keep the catalog out of object streams in encrypted files (Acrobat) by @ch0kemeister in https://github.com/storytold/pdfcraft/pull/836
- fix(edit): refuse a header start number that would wrap the next page (#804) by @muraa-p in https://github.com/storytold/pdfcraft/pull/834
- OCR: a scanned euro sign reads as €, not E by @mlkonrad in https://github.com/storytold/pdfcraft/pull/796
- fix(comments): include replies to replies in the comment summary (#820) by @muraa-p in https://github.com/storytold/pdfcraft/pull/840
- fix(xfdf): drop the replaced note's popup when re-importing a comment (#807) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/860
- fix(view): check Shift-Command-G before Command-G for find navigation (#810) by @Hathor875 in https://github.com/storytold/pdfcraft/pull/835
- fix(editing): recognize paragraph drafts as unsaved work (#811) by @Hathor875 in https://github.com/storytold/pdfcraft/pull/843
- fix(automation): retain batch results with identical filenames by @Ni-zav in https://github.com/storytold/pdfcraft/pull/877
- M13: preserve desktop Action Wizard batch results by @Tevinhead in https://github.com/storytold/pdfcraft/pull/886
- Fit to width fits the shown page in single-page view (#808) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/859
- fix(links): find URLs when lowercasing changes the text length (#816) by @muraa-p in https://github.com/storytold/pdfcraft/pull/830
- organize: deleting the opening page drops the catalog OpenAction (#821) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/855
- fix(text): Turkish dotted and dotless i match in case-insensitive search by @snipeTR in https://github.com/storytold/pdfcraft/pull/892
- XFDF comment exchange keeps polygon and polyline vertices (#809) by @DWAA1660 in https://github.com/storytold/pdfcraft/pull/848
- XFDF keeps a callout's leader, text-box inset, intent and arrowhead (#819) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/854
- Web: warn before reloading a document with unsaved changes (#812) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/856
- Issue #813: a cancelled recovery password no longer attaches to the next unlocked document by @ch0kemeister in https://github.com/storytold/pdfcraft/pull/858
- Viewer: touchpad scrolling tracks the finger 1:1 (#759) by @justinjohn0306 in https://github.com/storytold/pdfcraft/pull/868
- Keep every part when bookmark titles repeat in doc_split (#800) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/863
- Windows: add reproducible security diagnostics for storytold/pdfcraft#747 by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/769
- Security notice wraps beside its buttons instead of running under them (#785) by @DWAA1660 in https://github.com/storytold/pdfcraft/pull/832
- M10.2: scan JPEG metadata beyond frame headers by @CQMHV in https://github.com/storytold/pdfcraft/pull/764
- Issue #878: Combine stores an image once when its colour space is an indirect name by @mlkonrad in https://github.com/storytold/pdfcraft/pull/883
- organize: drop named destinations and their links when a page is deleted (#817) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/851
- JavaScript: limit util.printf widths and output, and array arguments by @haranishi in https://github.com/storytold/pdfcraft/pull/770
- Linux: "Use system setting" asks the desktop, not winit by @gyurix in https://github.com/storytold/pdfcraft/pull/881
- Extract/Combine: a page repeated in one selection gets its own annotations (#818) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/852
- Fill & Sign tools pick up placed signatures to move and resize them by @LloydNicholson in https://github.com/storytold/pdfcraft/pull/822
- Web: opt-in embedding bridge for host pages (?host=parent) by @CyberFox-81 in https://github.com/storytold/pdfcraft/pull/842
- Print: a scaled annotation appearance no longer prints larger than its rectangle (#802) by @MarekSpodBiedry in https://github.com/storytold/pdfcraft/pull/861
- Single instance: enable tab handoff in Windows portable mode (#889) by @A-viral-dev in https://github.com/storytold/pdfcraft/pull/891
- Issue #390: build the DMG with hdiutil create so the app passes codesign --strict by @ch0kemeister in https://github.com/storytold/pdfcraft/pull/823
- M4: make page-label generation lazy across large documents by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/845
- lopdf: bound compressed-object lookups and object-stream members by @haranishi in https://github.com/storytold/pdfcraft/pull/771
- hayro-syntax: cap the nesting of direct arrays and dictionaries by @haranishi in https://github.com/storytold/pdfcraft/pull/772
- M11: Reduce file size shrinks office scans, and never saves a bigger copy (refs #490) by @taylorandrew07-lab in https://github.com/storytold/pdfcraft/pull/849
- M11: Reduce file size and Optimize PDF drop images nothing draws, such as a deleted image by @taylorandrew07-lab in https://github.com/storytold/pdfcraft/pull/894
- M9: name the Windows store certificates that can't sign (#179) by @EpsilonLLC in https://github.com/storytold/pdfcraft/pull/761
- M12: XFA rows in areas get their instances by @silverhadch in https://github.com/storytold/pdfcraft/pull/853
- Exported images keep their transparency, JPEG cut-outs included (#645) by @DWAA1660 in https://github.com/storytold/pdfcraft/pull/763
- Fill colour for rectangle, oval and polygon comments (#686) by @DWAA1660 in https://github.com/storytold/pdfcraft/pull/793
- M14: localize displayed shortcut key names (#496) by @Tevinhead in https://github.com/storytold/pdfcraft/pull/884
- M3, #740: column select (Alt/Option-drag, or Edit ▸ Column select) by @mlkonrad in https://github.com/storytold/pdfcraft/pull/765
- Combine files: a thumbnail grid, card sizes and card actions (1 of 3, refs #611) by @taylorandrew07-lab in https://github.com/storytold/pdfcraft/pull/777
- Combine files: expand a file into its pages (2 of 3, refs #611) by @taylorandrew07-lab in https://github.com/storytold/pdfcraft/pull/788
- Combine files: move and remove single pages before combining (3 of 3, closes #611) by @taylorandrew07-lab in https://github.com/storytold/pdfcraft/pull/790
- M14: Add Polish interface language by @80aa08 in https://github.com/storytold/pdfcraft/pull/782
- Issue #870: keys leave the document under a dialog alone by @jay-tau in https://github.com/storytold/pdfcraft/pull/898
- fix(redact): Turkish, German, French and Italian month names in the Dates pattern by @snipeTR in https://github.com/storytold/pdfcraft/pull/900
- fix(redact): the Email pattern finds internationalized addresses by @snipeTR in https://github.com/storytold/pdfcraft/pull/901
- fix(create): read UTF-16, byte-order-marked and Windows code page text files by @snipeTR in https://github.com/storytold/pdfcraft/pull/903
- fix(crypt): R2–R4 passwords with non-ASCII characters open (PDFDocEncoding) by @snipeTR in https://github.com/storytold/pdfcraft/pull/905
- M14: interface size preference; Auto follows GNOME text scaling by @mitul72 in https://github.com/storytold/pdfcraft/pull/902
- M7: keep embedded CMap ranges compact instead of truncating expansion by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/837
- M4: traverse large bookmark trees lazily without dropping later items by @cyfung1031 in https://github.com/storytold/pdfcraft/pull/876
- M14: give Windows PDF files a dedicated document icon by @joeabouserhal in https://github.com/storytold/pdfcraft/pull/890
- Edit PDF: select and move multiple objects together (#844) by @Tevinhead in https://github.com/storytold/pdfcraft/pull/907
- Edit text: white or pale text is edited on a dark box instead of vanishing on white (#913) by @DWAA1660 in https://github.com/storytold/pdfcraft/pull/921
- Fill & Sign: Add text keeps what was typed on click-away, and its box grows by @dsskaggs-ai in https://github.com/storytold/pdfcraft/pull/918
- Select tool picks up a signature placed over a form field by @LloydNicholson in https://github.com/storytold/pdfcraft/pull/917
- Drawn signatures and drawings resize from their handles by @LloydNicholson in https://github.com/storytold/pdfcraft/pull/920
- Bump to 0.6.0; add a Linux riscv64 release build by @echelon in https://github.com/storytold/pdfcraft/pull/945
- @mmmaarian03-crypto made their first contribution in https://github.com/storytold/pdfcraft/pull/743
- @Hathor875 made their first contribution in https://github.com/storytold/pdfcraft/pull/681
- @oussama-dalhi made their first contribution in https://github.com/storytold/pdfcraft/pull/696
- @Toddpe made their first contribution in https://github.com/storytold/pdfcraft/pull/704
- @benimaru327 made their first contribution in https://github.com/storytold/pdfcraft/pull/715
- @abdelhaqelamraoui made their first contribution in https://github.com/storytold/pdfcraft/pull/692
- @silverhadch made their first contribution in https://github.com/storytold/pdfcraft/pull/753
- @muraa-p made their first contribution in https://github.com/storytold/pdfcraft/pull/833
- @ch0kemeister made their first contribution in https://github.com/storytold/pdfcraft/pull/836
- @Ni-zav made their first contribution in https://github.com/storytold/pdfcraft/pull/877
- @snipeTR made their first contribution in https://github.com/storytold/pdfcraft/pull/892
- @gyurix made their first contribution in https://github.com/storytold/pdfcraft/pull/881
- @CyberFox-81 made their first contribution in https://github.com/storytold/pdfcraft/pull/842
- @A-viral-dev made their first contribution in https://github.com/storytold/pdfcraft/pull/891
- @taylorandrew07-lab made their first contribution in https://github.com/storytold/pdfcraft/pull/849
- @80aa08 made their first contribution in https://github.com/storytold/pdfcraft/pull/782
- @jay-tau made their first contribution in https://github.com/storytold/pdfcraft/pull/898
- @mitul72 made their first contribution in https://github.com/storytold/pdfcraft/pull/902
- @joeabouserhal made their first contribution in https://github.com/storytold/pdfcraft/pull/890
- @dsskaggs-ai made their first contribution in https://github.com/storytold/pdfcraft/pull/918
Full Changelog: https://github.com/storytold/pdfcraft/compare/v0.5.0...v0.6.0