What's Changed
- Adopt shared panel docking with document-aware visibility by @skylartaylor in #966
- Print: Windows lists its printers and spools jobs by @Mawfyy in #847
- M10: Windows printing prints at actual size, off the UI thread (follow-up to #847) by @echelon in #1007
- ci: refactor workflows to use storytold/craft-common-actions by @dylanmtaylor in #1073
- Text extraction: word gaps follow position on the line, not drawing order (#1062) by @pauliusiv123-rgb in #1074
- M7: watermark offset from the page centre (edit.watermark-appearance) by @Byxis in #1076
- M12: XFA script time limits start when the engine is ready by @arcanii in #1081
- Linux: draw on the GPU the Wayland compositor draws with by @atoslins in #1088
- doc_create from text refuses characters Helvetica can't draw (#959) by @sibrash4 in #1030
- Linux: StartupWMClass is the window's app id by @atoslins in #1087
- M4, #569: Combine files takes images and text files by @mlkonrad in #1032
- Return renderer initialization errors to the OpenGL startup fallback by @huferyliu in #1042
- Forms: encode appearances with the existing simple font by @piero-83 in #1044
- Forms: keep the accepted value when Tab wraps to the same field by @piero-83 in #1045
- CLI: reject malformed --root options before dispatch by @piero-83 in #1048
- Edit images: moving or resizing a clipped image moves its own clip too (#1022) by @MarekSpodBiedry in #1049
- M2: stream page content past the 256 MiB cap (item 1 of #623) by @cyfung1031 in #797
- XFA: single-block forms paginate, open in their saved state, and show their signatures by @EULArule in #1098
- UI: a tool chosen with no document open asks for a file and runs on it by @michelleDeko in #1100
- M14: Enumerate form fields once on open by @cyfung1031 in #1011
- Top bar: the Save button names its shortcut instead of "(M4)" (#962) by @DWAA1660 in #1013
- M14: correct Taiwan Traditional Chinese accessibility and form terms by @MaxTheHaters in #1023
- M10: Enhance camera image finds the document's edges; rotate, crop or organize after Enhance page (part 3 of #1008) by @magdale76 in #1027
- M9: stream structure-tree checks without a total-element cutoff by @cyfung1031 in #926
- fix(macos): close the empty main window with Command-W by @Ni-zav in #930
- fix(xfdf): combine imported annotation flags with bitwise OR by @Ni-zav in #931
- feat(macos): declare document icon file for PDFs in Info.plist by @Totopo27 in #933
- macOS: the tab strip is the 28 pt band the traffic lights are centred in (#789) by @ch0kemeister in #1055
- Issues #444, #186: a mouse wheel scroll speed preference, faster by default on Windows and Linux by @AutoHenry in #514
- fix(ui): bookmark, comment and command filters match Turkish İ/ı in any case by @snipeTR in #937
- fix(annot): create mailto links for bare email addresses by @Ni-zav in #941
- Fix/noissue hyphenated print label ranges s20261010 t220019 z f82d4 by @Ni-zav in #942
- macOS: "Reopen the files that were open" starts from the system reopen-windows setting (#871) by @ch0kemeister in #1053
- Keep Border and Fill color palettes independent in field Properties by @sanyamsingh001 in #1054
- M2, #1060: axial and radial shadings draw as native gradients (InDesign fades 10× faster) by @mlkonrad in #1061
- UI: theme picker with light and dark theme cards by @luniiya in #1082
- Docs: sync the progress docs with issues closed on 2026-10-10 by @Ridzzz0Alam in #1064
- Fix plural forms for recent document page counts by @neronek22 in #1065
- Read mode: the rail's Bookmarks and other pane buttons open their panels (#932) by @DWAA1660 in #947
- Issue #948: the root-confinement test tries the symbolic-link escape only when the link was made by @pauliusiv123-rgb in #949
- fix(measure): include closing edges of every filled PDF subpath by @Ni-zav in #952
- demo-pdf: two fixes so xtask demo-pdf and xtask screenshots work on Windows by @pechnikov2026-star in #954
- M7: shard Japanese Type 3 fallback fonts across large edits by @cyfung1031 in #958
- Typed signatures draw Cyrillic and Greek letters (#846) by @DWAA1660 in #963
- M7: shard Arabic generated glyph fonts instead of rejecting large text by @cyfung1031 in #967
- M9: sign with CAC/PIV smart cards through the macOS Keychain by @sfv9 in #968
- M10: stream Create Multiple sources without a fixed file-count cutoff by @cyfung1031 in #978
- M11: strip redundant ASCII stream wrappers during optimization by @cyfung1031 in #989
- text_find stops reading pages once its limit is reached (#971) by @DWAA1660 in #990
- M14: a chosen interface size is absolute, as in PhotoCraft by @mitul72 in #1005
- docs(ocr): add model download step to build instructions by @mjohnson7cd in #1006
- M2: keep non-interpolated minified images sharp by @cyfung1031 in #635
- docs: register the MCP server from an installed release by @sawizzle in #643
- M12: add deterministic snap property tests to the measure crate by @cyfung1031 in #714
- Windows: Save asks where to keep an Outlook attachment instead of writing its temporary copy by @art804 in #601
- Chinese UI: draw with an installed Chinese face when the build has none (#826) by @YingQiu0871 in #925
- fix(ui): preserve scroll position when collapsing or resizing sidebars (#1056) by @omarelders in #1069
- render: don't let a hostile page-tree /Count abort inspection by @pechnikov2026-star in #956
- xfa, xfdf: refuse XML nested past 1024 levels instead of aborting the process by @pkibiego in #987
- M2: overlapping text runs stay whole; placement in arrange, bounded checks by @cyfung1031 in #748
- pt-BR: lowercase month names in the date picker by @WladmirJunior in #1089
- M9: visible digital signatures can show a drawn, typed or image graphic (#193) by @kestrel99 in #934
- Issue #568: honour the document's copy permission (Table 22, bit 5) by @jay-tau in #914
- Viewer: Continuous scrolling is an independent checkbox over the base layout (#752) by @justinjohn0306 in #896
- M4: open Organize Pages as a selectable thumbnail overview by @lukashold in #1004
- Add an opt-in low-disk Cargo profile by @cyfung1031 in #951
- Select tool: trigger multi-click text selection on pointer press (#1024) by @krinry in #1040
- M14: scan PdfCraft page-content markers once per document refresh by @cyfung1031 in #1016
- Open dialog: allow selecting several files at once by @LucasT-dev in #1086
- Issue #431: reload a document when its file changes on disk by @pauliusiv123-rgb in #459
- fix(annot): validate finite link areas before add or edit by @Ni-zav in #940
- Add faux-redaction audit (paint-order and colour-aware, fail-closed) by @ejbarraza in #110
- fix(ui): prevent translated tool labels from overflowing and align German terminology by @Ni-zav in #939
- chore: bump github actions to fix Node 20 deprecation warnings by @dylanmtaylor in #641
- On-page text boxes keep a dark caret on their white backgrounds in the dark theme (#655) by @MarekSpodBiedry in #734
- Render visible pages before thumbnails and text extraction by @gyurix in #950
- Print: start PowerShell on Windows by its full path by @jcl-bit in #1106
- Comments: line breaks saved as CR show in comment text by @nicholasyoannou in #1113
- Cap unbounded editing and text caches; index form fields once by @chiranjeevi-max in #1115
- Fix text selection cursor on all tools toggle(View More - View Less Button) by @oussama-dalhi in #1121
- Print: architectural paper presets and PDF scale controls (#599 follow-up) by @durtyrobbin in #1123
- M10: Enhance camera image cleans the photo up and chooses its look (part 4 of #1008, closes #1034) by @magdale76 in #1038
- Security: fix 10 verified audit findings in redaction, signature validation, and untrusted-input handling by @JeremyYao in #1099
- feat: Scale down large signature images instead of rejecting (#1075) by @mjohnson7cd in #1124
- Forms: keep tiles and render unbaked field values during page re-render by @Piohrun in #636
- Issue #995 & #1077: unlock a restricted document with its permissions password by @Ridzzz0Alam in #1127
- Tests: consolidate safe ui-egui integration targets by @cyfung1031 in #992
- fix(theme): complete Linux System appearance tracking by @coygeek in #1017
- Issue #432: global Units preference (mm, cm, in, pt), defaulting to the system region by @bulgariamitko in #463
- Give dialogs roomier text fields and padding by @bartalos86 in #487
- i18n: let the layers below hand their sentences over, so they can be translated by @feraremag2680 in #478
- Improve PDF Navigation with Cursor-Anchored Zoom and Mouse Panning by @mhadidi06 in #504
- M14: complete the Czech (cs) interface catalog by @Losminek in #1066
- M14: Italian catalog review: meaning, agreement, consistency (47 entries) by @magdale76 in #1025
- M14: Slovenian (Slovenščina) interface language by @spacekomet in #1091
- Add Greek (el) interface localization by @Camthalion77 in #994
- M14: Kazakh interface language by @pechnikov2026-star in #955
- feat(i18n): add complete Turkish interface language support by @yeniufuklar-com in #1057
- Content edits on heavy documents: narrow refresh, cached appearances, per-page invalidation by @MaksPV in #1122
- M7: Hebrew in Edit text (reading order, writing order, Hebrew glyphs) by @tzagim in #521
- Heavy pages: cull off-tile images, cache decodes, preview backdrops, calmer queues by @MaksPV in #1117
- M14: text the fonts can't draw is kept and reported, never written as ? silently by @kekeandzeyu in #1112
- M7: support shaped Thai text in Add Text and UI fallback fonts by @PuemMTH in #767
- M7: preserve overlapping text when dragging paragraphs (#594) by @FredApps in #1052
- Bound materialized text search matches (#971) by @rp6186030 in #1164
- XFA: import and export data files, and pictures for image fields by @ysrdevs in #1175
- docs(contributors): add Ufuk Efe to people.toml by @yeniufuklar-com in #1177
- Issue #1185: Protect refuses passwords that encryption would make empty or equal by @jay-tau in #1186
- M14: keep structural page order through inspection by @cyfung1031 in #1182
- Raise workspace rust-version to 1.95 to match the UI crate (#1169) by @MarekSpodBiedry in #1188
- M5: preserve comment identities during partial XFDF and FDF imports by @MMexicann in #1144
- Test PDF viewer trackpad pinch zoom by @earlvanze in #1148
- M4: replace selected pages from organize toolbar and context menus (#786) by @Hathor875 in #1149
- UI: checkboxes and radio buttons are outlined, and checkboxes are square by @Toddpe in #1173
- M14: "Edit with PdfCraft" on the File Explorer menu of PDF files (#682) by @jcl-bit in #1180
- M2: bound the total size of page-label prefixes by @ymote in #1146
- Windows printing: two-sided binds on the chosen edge; note drivers that ignore Two-sided by @bulgariamitko in #1154
- Issue #1028: OCR can read pictures on pages that already have text by @rp6186030 in #1184
- M14: choose Tools panel side in Preferences by @earlvanze in #1130
- Show annotation actions beside selected text by @earlvanze in #1133
- i18n(es): add 84 missing rows, consistent tú register by @diegozpy in #1134
- Linux: prefer server DPI over panel physical DPI in vendored winit by @gyurix in #1150
- M2: keep doubled short text runs from interleaving by @cyfung1031 in #1198
- docs: sync Earl Co contributor name from GitHub by @earlvanze in #1199
- Accessibility: identify structure objects in checker findings by @earlvanze in #1207
- Accessibility: edit structure tag properties through tools by @earlvanze in #1210
- Accessibility: export before-and-after review record by @earlvanze in #1204
- M10.5: Adopt craft-print spooler with Windows printing fixes by @skylartaylor in #1015
- Preserve source fonts in text editing and resize clipped artwork by @komo1iddin in #1116
- Polish chrome hover, press, and selection by @bartalos86 in #457
- Edit text: support Devanagari system font fallback and Indic pre-base matra reordering by @krinry in #1033
- Fix Word invoice layout and pagination (#773) by @lollinoo in #1126
- M5.7: Fill & Sign Scan tab for photographed signatures (#1110) by @Bjorneseth in #1111
- M4: rename colliding form field names when combining (organize.field-name-conflicts) by @edurbs in #1155
- M10: Create separate PDFs from multiple files by @earlvanze in #1183
- Comments panel: show Persian and Arabic comments in reading order (#1079) by @itrycodinganditsbad in #1138
- M10: Presentation (.pptx) export (#1137) by @Hathor875 in #1162
- Add editable page-range selection to Organize Pages (#1092) by @DWAA1660 in #1174
- M14: edits let go of the previous working file before writing the next (gap 13) by @rp6186030 in #1279
- Accessibility: show figure findings on the page by @earlvanze in #1280
- Fix viewport jitter when annotating with search active (#1254) by @omarelders in #1283
- Automation tests: isolate workdirs by call site by @cyfung1031 in #1223
- M0: validate the committed parity manifest in xtask tests by @srt8hellcat2-ui in #1214
- M7: report unsupported document link actions accurately by @cyfung1031 in #1242
- M5: Insert text snaps its caret to the text (#345) by @diegozpy in #1249
- Accessibility: compare checker results after each recheck by @earlvanze in #1250
- M5: quick-bar colour recolours the selected comment (#1191) by @rp6186030 in #1255
- Redaction: add case-sensitive and whole-word search options by @earlvanze in #1258
- control: close the connection on malformed input before auth by @SteamSmith in #1259
- M10.5: load driver options for CUPS printer instances by @srt8hellcat2-ui in #1226
- Units: read the Windows measurement system from the registry, not reg.exe by @jcl-bit in #1227
- Accessibility: reorder sibling structure tags through an undoable tool by @earlvanze in #1229
- Accessibility: export before-and-after review as HTML by @earlvanze in #1234
- Refine Greek localization and May abbreviation by @Camthalion77 in #1262
- Resize exclusive image crops across nested states and content streams by @komo1iddin in #1269
- honour the /Lab colour space /WhitePoint (#1203) by @Hathor875 in #1237
- Accessibility: persist human review decisions for an exact PDF revision by @earlvanze in #1239
- Accessibility: add visual tag properties panel by @earlvanze in #1216
- M10: print from the web build through the browser's print dialog (gap 4) by @rp6186030 in #1243
- M7: open local GoToR PDF links natively by @cyfung1031 in #1265
- M3: follow Windows' Animation effects setting; add an Animation effects preference by @JeremyYao in #1235
- Reading colours: replace document colours for reading comfort (#897) by @edurbs in #1270
- Accessibility: keep manual review visible in checker summaries by @earlvanze in #1224
- Tests: normalize generated streams in Arabic output golden by @earlvanze in #1275
- Comments: "Other colour…" picker and recent custom colours under the swatches (#1193) by @ngrafton2006 in #1261
- M3: add PDF tab context menu (fixes #1233) by @srt8hellcat2-ui in #1266
- M14: tune Windows low-DPI JetBrains Mono hinting by @cyfung1031 in #1264
- Text extraction: honour /ActualText, so Thai from Chrome PDFs is searchable by @git-monchiant in #1217
- feat(edit): remove all links command and context menu (#539) by @Hathor875 in #1213
- M12: say when a form's scripts were turned off by @arcanii in #1251
- XFA: one script thread per event, and the live form kept up to date in place by @ysrdevs in #1355
- xtask: stop headless Chrome leaving macOS code-sign clones (#1196) by @MarekSpodBiedry in #1292
- Issue #1296: hayro-syntax applies SASLprep to AES-256 passwords (PdfCraft patch 16) by @jay-tau in #1345
- M3: match Greek final sigma in case-insensitive search by @nevicia2010-hub in #1349
- Clean form tag references by @not-a-feature in #1351
- M12: accept literal digits in date formats (dd.mm.26) by @aparcar in #1352
- CI: keep craft-fonts enabled across Linux Rust gates by @cyfung1031 in #1284
- CI: run dependency layering once per workflow by @cyfung1031 in #1286
- CI: keep line tables instead of full workspace debug info by @cyfung1031 in #1298
- test(cli): reject unknown MCP options by @mhmdeve in #1342
- Refine search match selection and text failure jitter handling by @omarelders in #1291
- Fill & Sign: choose text and date font size by @earlvanze in #1285
- fix(xfdf): text data from a one-field form keeps its commas (#1321) by @marcoarnulfo in #1371
- CLI: audit rejects unknown options before reading the file (fixes #1332) by @umesh429 in #1372
- fix(preflight): find colour operators after any PDF whitespace (#1334) by @marcoarnulfo in #1373
- fix(sign): a signature field with a null /V can be signed by name (#1328) by @marcoarnulfo in #1374
- fix(redact): removing comments keeps non-comment annotations (#1325) by @marcoarnulfo in #1375
- fix(print): refuse huge posters at the sheet limit instead of overflowing (#1335) by @marcoarnulfo in #1376
- M7: preserve Arabic text order in copy, search and editing by @YouseifUS in #1369
- M2: snap shrunk interpolated images to whole pixels so scans stay sharp by @philip-tam in #1377
- M14: Preserve recovery snapshots without readable metadata by @LabDennis in #1378
- fix(fonts): a composite /W run past the last CID stops there (#1313) by @marcoarnulfo in #1389
- fix(ui): the Fields panel lists a field on a missing page as unplaced (#1307) by @marcoarnulfo in #1390
- fix(automation): content_update refuses text styling on an image (#1331) by @marcoarnulfo in #1391
- fix(forms): a whole look keeps the rest of an indirect /MK (#1322) by @marcoarnulfo in #1392
- fix(forms): a literal Off value reads as Off outside buttons (#1320) by @marcoarnulfo in #1393
- fix(fonts): a /Differences code past 255 no longer encodes as its last byte (#1314) by @marcoarnulfo in #1394
- Issue #1368: keep text a dragged paragraph passed over by @Ridzzz0Alam in #1381
- M7: Preserve explicit page ranges across dialog redraws (#1304) by @LabDennis in #1382
- M3: select an image on the page and copy it by @FrancescoClemeno in #1363
- fix(cli): edit refuses move/insert destinations past the end (#1330) by @umesh429 in #1400
- fix(sign): refuse to sign a field whose /V is not a signature (#1328) by @marcoarnulfo in #1402
- fix(forms): keep a whitespace-only value in a text field without a format (#1323) by @marcoarnulfo in #1403
- fix(content): skip an inline image with an unreadable key to its EI (#1318) by @marcoarnulfo in #1404
- fix(automation): doc_save reports a required full rewrite as not incremental (#1329) by @marcoarnulfo in #1405
- fix(audit): an identity cm between re and fill no longer hides a cover (#1333) by @umesh429 in #1410
- fix(ui): Current page prints the viewed page, not a page labelled with its number (#1308) by @marcoarnulfo in #1411
- fix(render): draw Turkish Ğ İ Ş ğ ş in non-embedded fonts by @TheLastRoadRunner in #1409
- M10: edit OCR text on scanned pages so the change shows by @TanguAchilis in #1397
- Edit text: support per-font visual-order Indic text and nukta reordering by @krinry in #1380
- M12: preview text structure proposals for auto-tagging by @earlvanze in #1383
- M10: Test current-page print previews and saved output by @LabDennis in #1415
- fix(content): count an unreadable inline image with no EI as skipped (#1318) by @marcoarnulfo in #1418
- feat(ui): add command palette arrow-key navigation by @Morpheus004 in #1419
- M4: Fix Combine duplicate warnings and cache their computation by @LabDennis in #1420
- feat(preflight): verify image resolution and bleed without rewriting the file by @Baltsar in #1408
- M14: add Lithuanian interface and date localization by @tdslot in #1401
- M1: write a valid xref when an incremental save has no objects (#1339) by @bartalos86 in #1424
- Release workflow: pass the Azure signing secrets by @echelon in #1194
New Contributors
- @dylanmtaylor made their first contribution in #1073
- @arcanii made their first contribution in #1081
- @atoslins made their first contribution in #1088
- @sibrash4 made their first contribution in #1030
- @huferyliu made their first contribution in #1042
- @piero-83 made their first contribution in #1044
- @EULArule made their first contribution in #1098
- @michelleDeko made their first contribution in #1100
- @MaxTheHaters made their first contribution in #1023
- @magdale76 made their first contribution in #1027
- @Totopo27 made their first contribution in #933
- @luniiya made their first contribution in #1082
- @Ridzzz0Alam made their first contribution in #1064
- @neronek22 made their first contribution in #1065
- @pechnikov2026-star made their first contribution in #954
- @sfv9 made their first contribution in #968
- @mjohnson7cd made their first contribution in #1006
- @sawizzle made their first contribution in #643
- @art804 made their first contribution in #601
- @YingQiu0871 made their first contribution in #925
- @omarelders made their first contribution in #1069
- @pkibiego made their first contribution in #987
- @WladmirJunior made their first contribution in #1089
- @kestrel99 made their first contribution in #934
- @lukashold made their first contribution in #1004
- @krinry made their first contribution in #1040
- @LucasT-dev made their first contribution in #1086
- @ejbarraza made their first contribution in #110
- @nicholasyoannou made their first contribution in #1113
- @durtyrobbin made their first contribution in #1123
- @JeremyYao made their first contribution in #1099
- @Piohrun made their first contribution in #636
- @coygeek made their first contribution in #1017
- @mhadidi06 made their first contribution in #504
- @Losminek made their first contribution in #1066
- @spacekomet made their first contribution in #1091
- @Camthalion77 made their first contribution in #994
- @yeniufuklar-com made their first contribution in #1057
- @tzagim made their first contribution in #521
- @kekeandzeyu made their first contribution in #1112
- @PuemMTH made their first contribution in #767
- @FredApps made their first contribution in #1052
- @rp6186030 made their first contribution in #1164
- @MMexicann made their first contribution in #1144
- @earlvanze made their first contribution in #1148
- @ymote made their first contribution in #1146
- @diegozpy made their first contribution in #1134
- @komo1iddin made their first contribution in #1116
- @lollinoo made their first contribution in #1126
- @Bjorneseth made their first contribution in #1111
- @itrycodinganditsbad made their first contribution in #1138
- @srt8hellcat2-ui made their first contribution in #1214
- @SteamSmith made their first contribution in #1259
- @ngrafton2006 made their first contribution in #1261
- @git-monchiant made their first contribution in #1217
- @nevicia2010-hub made their first contribution in #1349
- @not-a-feature made their first contribution in #1351
- @aparcar made their first contribution in #1352
- @mhmdeve made their first contribution in #1342
- @marcoarnulfo made their first contribution in #1371
- @umesh429 made their first contribution in #1372
- @YouseifUS made their first contribution in #1369
- @philip-tam made their first contribution in #1377
- @LabDennis made their first contribution in #1378
- @FrancescoClemeno made their first contribution in #1363
- @TheLastRoadRunner made their first contribution in #1409
- @TanguAchilis made their first contribution in #1397
- @Morpheus004 made their first contribution in #1419
- @Baltsar made their first contribution in #1408
- @tdslot made their first contribution in #1401
Full Changelog: v0.6.0...v0.7.1