What's Changed
- Issue #166: Save, Print and Export include the text still being typed in a form field by @AutoHenry in #278
- V, H and Space pick the Select and Hand tools by @wstock in #281
- M14: Arabic and Hebrew file names render in the tab strip, recent files and Properties by @samehelhawary in #285
- M3: find text in mixed horizontal and vertical PDFs by @midasdf in #287
- Add a complete French UI catalog by @iMhack87 in #291
- Run set-layer-visibility actions from links and push buttons by @pauliusiv123-rgb in #292
- M10: select pages in the Pages panel and print the selection by @samehelhawary in #296
- Issue #159: open .p12 files with trailing whitespace, PEM armour or base64 by @Mawfyy in #298
- Issue #173: a failed ?file= startup fetch is reported in the app by @DWAA1660 in #302
- Sign with digital IDs from the Windows certificate store (#179) by @EpsilonLLC in #304
- Validate discard_changes before closing clean documents by @sanyamsingh001 in #306
- XFA: run FormCalc scripts by @ysrdevs in #301
- M7: preserve ideographic spaces when rewriting paragraphs by @midasdf in #309
- M14: complete Simplified Chinese About credits and multiline guidance by @Flowershangfromthebranches in #311
- Windows MSI: reject per-user overrides and retain progress text (#305) by @CQMHV in #310
- Security: create save staging files with create_new (follow-up to #164) by @jcl-bit in #319
- M4: Combine files in its own tab, with a sortable table and unlocking of protected files by @mlkonrad in #321
- Issue #236: the Save-changes prompt shortens very long names to fit the window by @Fazmin in #322
- Reject invalid page selector types before combining PDFs by @sanyamsingh001 in #329
- Issue #263: combine, extract and split keep the PDF/X output intent and identification by @Fazmin in #334
- Security: print jobs, new digital IDs and the --control file no longer write through planted links by @jcl-bit in #338
- Security: refuse mailto attachments, show link hosts in punycode (follow-up to #104) by @jcl-bit in #337
- Issue #124: a long page label no longer overlaps its bookmark title by @Mawfyy in #328
- Add image signatures with placement preview and resize controls by @remesis in #335
- Issue #290: File ▸ Open Recent lists the recent files by @Mawfyy in #323
- M13:
pdfcraft-cli mcp --compactlists 12 tools and finds the rest by search by @Oldrich333 in #353 - M14: Telugu (తెలుగు) interface language by @chiranjeevi-max in #349
- Platform: one save-staging helper for automation and the desktop app (follow-up to #319) by @jcl-bit in #356
- Clippy: as_chunks in the signature image test (follow-up to #335) by @chiranjeevi-max in #360
- Update image signatures live during resize and movement by @remesis in #355
- Issue #157: the Windows portable zip keeps settings, logs and recovery beside pdfcraft.exe by @MarekSpodBiedry in #325
- M10.2: Create PDF from multiple files, edited as pages in the Organize grid by @samehelhawary in #361
- Add my contributor name (cyfung1031) by @cyfung1031 in #364
- render: apply W/W* clipping after every path-painting operator by @cyfung1031 in #362
- View: page rasters map texel for texel onto the screen (sharp text at any zoom) by @cyfung1031 in #363
- M11: Optimize PDF and Reduce File Size run in the background with a progress bar by @mlkonrad in #370
- Forms: round required-field border on radio buttons; Highlight fields is remembered by @cyfung1031 in #372
- Ink strokes are drawn as smooth curves through their points by @cyfung1031 in #374
- Fix toast wrapping and the Linux search shortcut hint by @sanyamsingh001 in #376
- i18n: add Russian (ru) interface translation by @MaksPV in #375
- render: draw non-embedded Japanese CID fonts with a craft-fonts face by @cyfung1031 in #368
- Comments without an appearance stream are drawn (display only, never saved) by @cyfung1031 in #371
- Home: pin folders and list their newest PDFs by @amitabhthakur in #383
- Issue #295: three clicks select the line, four clicks the page by @pauliusiv123-rgb in #366
- Linux: accept file:// URI args so desktop launchers recognise pdfcraft as PDF default by @bunakalya in #382
- M7: report Japanese Type 3 fallback font names by @midasdf in #387
- FDF: replies and review status keep their parent comment (fixes #333) by @SBaksa in #388
- Preserve CLI results when diagnostics fail and validate page arguments by @sanyamsingh001 in #391
- Keyboard shortcut to enter page number to jump to by @aus10d in #393
- M7: preserve Japanese Gothic fallback family and weight by @midasdf in #394
- M3: render pool renders each request once when the caller re-sends it by @cyfung1031 in #400
- CI: no macOS on PRs or main; macOS is built and tested by releases by @echelon in #512
- M1: enforce decoded limits on unfiltered COS streams by @Streetblock in #477
- M2: handle Unicode dates and preserve inspection fallback pages by @Streetblock in #469
- M7: pick a Japanese fallback face that has every glyph of the edited text (#384) by @MarekSpodBiedry in #472
- Never crash: CMap parsing can't panic, overflow or run away; tokens need no spaces by @AutoHenry in #495
- tests: pin the interface language so the suite passes outside English by @feraremag2680 in #502
- Issue #225: a closed Comments panel stays closed when picking comment tools by @AutoHenry in #501
- Export to Word: detect tables of at most 63 columns, Word's limit (#479) by @Erige005 in #483
- Comments: a new highlight opens its note for typing (#475) by @MarekSpodBiedry in #481
- M2.6: non-embedded Mincho fonts draw half-width katakana by @chent11 in #484
- Phone photos follow EXIF orientation; image signatures stay upright on rotated pages (#434) by @MarekSpodBiedry in #485
- Issue #425: long file names and paths on Home end in "…" before the row's details by @pauliusiv123-rgb in #443
- Keep document view state consistent when closing tabs and reverting by @sanyamsingh001 in #439
- Edit text: fast drags on a paragraph's edge no longer get dropped; add a left-edge handle by @kremit in #436
- M4.6: search bookmark titles (#257) by @midasdf in #424
- M3: keep overflowed document tabs reachable (#397) by @midasdf in #416
- sign: read the .p12 files Windows writes (BER, not DER) by @feraremag2680 in #453
- Never crash: dash patterns can't exhaust memory or hang the renderer by @jcl-bit in #405
- M3: renders of a dropped render pool stop at the next operator by @cyfung1031 in #409
- M3: rendered pixels are moved out of the pixmap, not copied by @cyfung1031 in #404
- M1: incremental saves are allocated once at their exact size by @cyfung1031 in #402
- Issue #442: reopen the files that were open when PdfCraft last closed by @pauliusiv123-rgb in #462
- M14: Bulgarian (Български) interface language by @bulgariamitko in #466
- M2: bound lopdf predictor scratch to available samples by @Streetblock in #470
- M5.7: keep natural-size image stamps upright on rotated pages (#434, partial) by @midasdf in #473
- macOS DMG: branded window background and icon layout by @XusBadia in #272
- Tests: serialize wgpu rendering in fill_sign.rs (Windows ARM64 crash) by @echelon in #395
- Never crash: JBIG2 symbol dictionaries can't loop without end by @jcl-bit in #408
- M7: Arabic in added text (shaping, bidi order, searchable Type 3 glyphs) by @fares111111122 in #403
- M14: German interface catalog (de) by @schiffer-soft in #471
- Redact pattern: international phone numbers match whole (refs #525) by @echelon in #543
- Encode the full WinAnsi 0x80–0x9F range: Š š Ž ž Œ œ Ÿ … (refs #347) by @echelon in #546
- Keep text colour in Word, HTML and RTF export (fixes #526) by @echelon in #547
- Pen strokes stay unselected and show no author popup (fixes #429) by @echelon in #549
- ↓ / ↑ turn pages in single-page view (fixes #273) by @echelon in #550
- Dependencies keep only line tables in dev builds (fixes #454) by @echelon in #559
- Shift+click extends the text selection (refs #527) by @echelon in #560
- Issue #430: clear the recent-files list, or remove one file from it by @pauliusiv123-rgb in #557
- Typed and drawn signatures stay upright on rotated pages (fixes #299) by @echelon in #562
- Linux: prefer the discrete GPU on desktops with a monitor on each GPU (fixes #445) by @echelon in #558
- M1: full saves are allocated at their exact size by @cyfung1031 in #523
- M3: the watchdog stops the render it gives up on by @cyfung1031 in #522
- A newly opened document starts at the top, not where the last session scrolled by @LloydNicholson in #554
- Bookmarks and links go to their destination's position and zoom by @LloydNicholson in #556
- M7: Type 3 fallback glyphs get a well-formed d1, so Acrobat draws edited text instead of bullets by @bulgariamitko in #548
- Never crash: fall back to OpenGL when wgpu can't start (#461, #435, #392) by @AutoHenry in #530
- Issue #537: pdfcraft-cli --help prints the full usage by @LloydNicholson in #540
- Forms: radio groups and check boxes accept their /Opt export values by @martinjohuber in #532
- Issue #324: on Windows 11, a window dragged to another monitor takes its scale by @cyfung1031 in #544
- de: translate labels that reach tl!() through variables; fix name collisions and wrong meanings by @martinjohuber in #541
- M14: Hungarian interface catalog (hu) by @bartalos86 in #545
- M1: stream data read from a file points into the file instead of being copied by @cyfung1031 in #552
- M3: rasters reach egui without a copy on the UI thread by @cyfung1031 in #555
- M14: refine German labels and prevent translated UI text overlap by @Streetblock in #515
- i18n: add complete Ukrainian interface translation by @dmatviichuk in #509
- M6.2: check boxes with non-UTF-8 state names show their mark when clicked by @chent11 in #536
- M6.2: form fields in Unicode CID fonts show Japanese instead of "?" by @chent11 in #535
- M7: edit text: Cyrillic/Greek replacement text no longer fails in serif lines, and is spaced proportionally by @bulgariamitko in #528
- Forms: rotate field widgets with /MK /R by @bartalos86 in #516
- M5: draw all ten PDF line-ending styles by @bartalos86 in #520
- Issue #125: page text the standard fonts can't draw is refused, not written as ? by @AutoHenry in #510
- M2: normalize JPEG2000 samples without overflowing by @Streetblock in #575
- Never crash: decompression bombs can't exhaust the renderer's memory by @jcl-bit in #411
- Never crash: mesh shadings can't exhaust memory or run for minutes by @jcl-bit in #412
- Fix: High-precision float mantissa overflow in hayro-syntax, causing warped display of some PDFs (#199) by @philkwek in #427
- M2: bound page-label traversal and output by @Streetblock in #480
- View: keep earlier tiles on screen while a zoom's new tiles render by @cyfung1031 in #415
- Fix main CI: move the rotated-field render test out of pdfcraft-forms (layering) by @echelon in #591
- View: the middle button pans instead of drawing with markup tools by @codyvogt in #565
- Pages panel: keep a short page current; context menu and drag to reorder by @max1e6 in #573
- M4: zoom the Organize page grid by @samehelhawary in #468
- Flatten Fill & Sign marks when saving by @bartalos86 in #464
- Fill & Sign: date format and date language in Preferences (refs #158) by @kisst in #505
- M10: Print ▸ Properties… opens the printer driver's own settings by @bulgariamitko in #482
- Reduce large-PDF memory growth (#307) by @skylartaylor in #419
- pdfcraft-cli --help lists
mcponly when the build has it by @LloydNicholson in #574 - M14: honor Windows display language with neutral launcher locales by @Streetblock in #567
- D5: READMEs for cos and engine by @tanish2k09 in #332
- Preserve alternate appearances and indirect push-button values on redraw by @sanyamsingh001 in #417
- M7: select and edit grouped PDF figures (Form XObjects) by @Flowershangfromthebranches in #450
- XFA: choice lists, signature, password, image and barcode fields; PNG and GIF pictures by @ysrdevs in #414
- MCP: common command tools, session resources and client hints by @storybored379 in #451
- D2, D3: fuzz every tool's arguments, and prove root confinement by @tanish2k09 in #351
- Fix main CI: remove duplicated forms redraw tests (E0428) by @echelon in #605
- Parity: cite the MCP resources test by its merged name by @echelon in #608
- Release: standalone Linux CLI archive (fixes #423) by @echelon in #613
- Decode outline titles with BOMs and raw UTF-8 consistently (refs #142) by @echelon in #614
- No form bar for push-button-only documents; Screen annotations aren't comments (refs #169) by @echelon in #615
- Edit text: lines split across content stream pieces are listed and edited (fixes #155) by @echelon in #628
- Export to Word/HTML/RTF: read text and images drawn by form XObjects (fixes #314) by @SBaksa in #406
- tests: pin the interface language in the harnesses added since #502 by @feraremag2680 in #593
- M14: clarify Ukrainian wording and restore CI by @dmatviichuk in #584
- M14: correct Hungarian Windows Store and saved-signature labels by @bartalos86 in #595
- M9: chain building checks CA constraints, key usage, path length and validity by @thorstenhirsch in #620
- Ship the OCR models in the desktop release packages (refs #103) by @echelon in #630
- M9: validate a document timestamp that sits in a signature field by @thorstenhirsch in #621
- M9: read BER signatures (DocuSign, Documenso); classify later changes narrowly by @thorstenhirsch in #144
- M9: more signature validation algorithms (SHA-3, RIPEMD-160, Ed25519, P-521, brainpool, PSS, rsa_sha1) by @thorstenhirsch in #386
- M14: complete the French (fr) catalog by @Byxis in #579
- i18n: complete the Japanese catalog (105 missing strings) and check it like fr/de/ru/zh-hans by @haranishi in #587
- Tell the user when PdfCraft draws without a GPU (#519) by @jcl-bit in #627
- M5: name line endings in the comment properties combo by @bartalos86 in #582
- M3: preserve local work when a startup URL arrives late by @Tevinhead in #583
- M2: bound PDF functions and reject invalid calculator operations by @Streetblock in #581
- M2: bound image resampling buffers before allocation by @Streetblock in #592
- Windows: a window larger than the GPU's texture limit can't close PdfCraft (#577) by @jcl-bit in #609
- Windows: a GPU that can't set up the window falls back to OpenGL (#519) by @jcl-bit in #617
- Tab strip: shrink tabs before scrolling, keep Open in sight; ignore about:blank titles by @max1e6 in #612
- CLI: pdfcraft-cli ui refuses a control file another user could plant by @jcl-bit in #597
- CLI: pdfcraft-cli.exe carries a Windows version resource by @jcl-bit in #598
- Fix #378: draw on the GPU that drives the primary display on Windows by @rschuerer in #631
- Fill & Sign: remove white background from imported signature images by @mrme2tiri-hash in #637
- Pages panel: delete pages from the thumbnails by @max1e6 in #607
- Fix non-exhaustive match in Windows signing path by @Dammy196 in #646
- i18n: add Italian (it) interface translation by @w-valzelli in #494
- i18n: complete Brazilian Portuguese (pt-BR) interface catalog by @edurbs in #604
- Never crash & persist: Make Current Properties Default and page-display choices survive a restart (#340, #266) by @Mawfyy in #365
- View: draw page previews at the resolution they are shown by @bartalos86 in #529
- D1: pin and verify the pdf.js corpus by @tanish2k09 in #339
- macOS: add native document integration diagnostics by @cyfung1031 in #653
- Forms: fields listed only as page widgets join the form by @edurbs in #649
- M6: bulk form-field properties and selection (#95) by @Tevinhead in #650
- M2: a ligature stays one glyph in the text layer, in every writing direction by @cyfung1031 in #660
- M2: a character a substitute font lacks draws .notdef, not an unrelated glyph by @cyfung1031 in #661
- M2: kanji that Adobe-Japan1 maps to a variation sequence draw in non-embedded fonts by @cyfung1031 in #662
New Contributors
- @samehelhawary made their first contribution in #285
- @iMhack87 made their first contribution in #291
- @EpsilonLLC made their first contribution in #304
- @sanyamsingh001 made their first contribution in #306
- @Flowershangfromthebranches made their first contribution in #311
- @mlkonrad made their first contribution in #321
- @Fazmin made their first contribution in #322
- @remesis made their first contribution in #335
- @Oldrich333 made their first contribution in #353
- @MarekSpodBiedry made their first contribution in #325
- @MaksPV made their first contribution in #375
- @amitabhthakur made their first contribution in #383
- @bunakalya made their first contribution in #382
- @SBaksa made their first contribution in #388
- @aus10d made their first contribution in #393
- @Streetblock made their first contribution in #477
- @feraremag2680 made their first contribution in #502
- @Erige005 made their first contribution in #483
- @chent11 made their first contribution in #484
- @kremit made their first contribution in #436
- @bulgariamitko made their first contribution in #466
- @XusBadia made their first contribution in #272
- @fares111111122 made their first contribution in #403
- @schiffer-soft made their first contribution in #471
- @LloydNicholson made their first contribution in #554
- @martinjohuber made their first contribution in #532
- @bartalos86 made their first contribution in #545
- @dmatviichuk made their first contribution in #509
- @philkwek made their first contribution in #427
- @codyvogt made their first contribution in #565
- @max1e6 made their first contribution in #573
- @kisst made their first contribution in #505
- @skylartaylor made their first contribution in #419
- @tanish2k09 made their first contribution in #332
- @thorstenhirsch made their first contribution in #620
- @Byxis made their first contribution in #579
- @haranishi made their first contribution in #587
- @Tevinhead made their first contribution in #583
- @rschuerer made their first contribution in #631
- @mrme2tiri-hash made their first contribution in #637
- @Dammy196 made their first contribution in #646
- @w-valzelli made their first contribution in #494
Full Changelog: v0.4.0...v0.5.0