Commit Graph
464 Commits
Author SHA1 Message Date
Alam 058053bffc Merge pull request #982 from atpanos/fix/i18n-polish-language-detection
fix(i18n): detect Polish and derive language routing
2026-11-12 13:55:43 +05:30
Alam 4dd34a659a Merge pull request #956 from AB527/fix/952-validate-doc-timestamps
(Bug) Detect and verify document timestamps in Validate Signature
2026-11-12 13:50:09 +05:30
Alam 25c2d34a9c Merge pull request #962 from AB527/feat/879-top-bar-hover-text
(Feature) Hover text on top bar buttons that hide their labels
2026-11-12 13:49:17 +05:30
Athanasios Panos 3c7eb141fc test(i18n): keep Polish-prefixed links unchanged in rewriteLinks
Cover the regression hinted at in review: an already /pl/-prefixed link
must not be prefixed a second time now that pl is part of the language
pattern.
2026-11-11 07:09:16 +01:00
Athanasios Panos edd824e1e3 fix(i18n): detect Polish and derive language routing from supportedLanguages
Polish (pl) was missing from the hand-maintained language regexes, so
getLanguageFromUrl() returned en for /pl/... pages and the UI fell back
to English after the initial server-rendered Polish content.

Derive the pattern from supportedLanguages so new locales cannot be
missed again, and cover Polish in getLanguageFromUrl(), changeLanguage()
and rewriteLinks() with regression tests.

Refs #972
2026-11-10 23:16:37 +01:00
alam00000 f0a1868526 fix(workflow): pass wasmUrl to pdf.js so JPEG2000 pages stop rendering blank, and fix Remove Blank Pages node failing on every PDF 2026-11-08 22:52:12 +05:30
Alam 24b060a134 Merge pull request #919 from kelseyjmw/fix-crop-scroll
Fix crop scroll
2026-10-31 16:38:58 +05:30
alam00000 2a8ce12b6e add support for GFM inline math delimiters 2026-10-31 16:16:23 +05:30
Atharva Bedekar 8e04279c17 feat(ui): add hover text to top bar buttons that hide their labels
Reset, FAQ and Close in PDF Multi Tool and the PDF Workflow toolbar lose
their text on small screens, leaving only an icon. Give them a title so
the action can still be identified on hover.

Multi Tool reuses existing translation keys. PDF Workflow is English
only, so its titles are plain text like its labels.

Fixes #879
2026-10-31 15:44:31 +05:30
Atharva Bedekar c244fbe8aa fix(validate-signature): flag weak timestamp imprints and ignore signer entries
Treat an MD5 or SHA-1 messageImprint as an insecure digest and show the
imprint algorithm in Technical Details.

Ignore Reason, Location, ContactInfo and Name on document timestamps, as
ISO 32000-2 Table 255 requires for ETSI.RFC3161.

The insecure digest status could not be reached because such results are
never valid, so these cards read "Invalid Signature". Show it in the
invalid branch instead.
2026-10-31 15:21:54 +05:30
alam00000 ba5821e43f feat(ads): update ad review timeline 2026-10-31 14:25:09 +05:30
alam00000 fac51527c8 feat(ads): collect ad details at Dodo checkout 2026-10-31 13:44:04 +05:30
alam00000 6ac0599ce3 feat(multi-tool): replace the page grid with the pdfium organizer 2026-10-30 16:11:50 +05:30
alam00000 3ce02c9ef7 feat(editor): match the viewer theme to the site colors 2026-10-30 16:11:49 +05:30
alam00000 27dfe79636 fix(tests): update WasmProvider tests to handle unversioned CDN URLs from older releases 2026-10-28 12:27:28 +05:30
alam00000 1a6b38c077 fix(docs): clarify Hyper Licensing 2026-10-27 13:23:08 +05:30
Atharva Bedekar 2daa7e2ad0 fix(validate-signature): detect and verify document timestamps
PDFs whose only signature is an RFC 3161 document timestamp
(/Type /DocTimeStamp, /SubFilter /ETSI.RFC3161) were reported as having
no signatures, because timestamp dictionaries were skipped on purpose.
node-forge also cannot parse a timestamp token directly, since it only
accepts SignedData that wraps plain data.

Timestamps are now extracted and flagged as such. The TSTInfo is read
from the token, and verification checks that its messageImprint matches
the signed byte range and that the TSA signature covers the TSTInfo.
The timestamp's genTime is shown as the date, and the result card uses
timestamp wording.

Fixes #952
2026-10-26 17:33:16 +05:30
Alam efb8c4fe47 Merge pull request #951 from AB527/feature/drag-and-drop-arrangement-for-multiple-file-conversions
(Feature) Add drag-and-drop arrangement for multi-file to PDF conversions
2026-10-26 15:00:46 +05:30
alam00000 9c796a873c feat(markdown): add LaTeX math support 2026-10-26 15:00:18 +05:30
Atharva Bedekar 2f1178ddd0 refactor: use Phosphor icon for file list drag handle
Replace the Lucide grip-vertical icon with Phosphor's dots-six-vertical, in line with the project-wide move to Phosphor.
2026-10-25 22:24:06 +05:30
Atharva Bedekar 49ab2ef17f feat: drag-and-drop reordering for multi-file to PDF conversions
Tools that combine several files into a single PDF used the upload
order as the page order, with no way to change it short of clearing
and re-adding files. Each file row now has a drag handle, and the
new order is used when the PDF is built.

Applies to the JPG, PNG, WebP, BMP, HEIC, SVG, TIFF, Image and TXT
to PDF tools. The shared logic lives in utils/sortable-file-list.ts
(built on the existing sortablejs dependency) instead of being
duplicated per page.
2026-10-25 15:34:16 +05:30
alam00000 f7a8a60440 fix(xps): repair scanner XPS packages that MuPDF fails to parse 2026-10-25 13:19:57 +05:30
alam00000 4edb1718cc feat: translate all pages, UI messages and docs and fix SEO redirects and indexing 2026-10-25 12:55:21 +05:30
alam00000 6e8e012d3d fix: serve canonical, hreflang and sitemap URLs and restore Export in the PDF editor 2026-10-23 15:01:31 +05:30
alam00000 7eec9a0d64 feat: add favorites functionality to tools 2026-10-22 15:04:42 +05:30
alam00000 4d3e8b964f fix: fit wide tables when printing, keep editor panes from collapsing, rename Upload to Select in Markdown to PDF 2026-10-22 13:34:35 +05:30
alam00000 538e940525 Merge main into add-farsi-translation 2026-10-22 12:47:54 +05:30
Alam 853182d6a3 Merge pull request #916 from sergitost10/feat/catalan-translation
feat(i18n): add Catalan language support
2026-10-22 12:38:34 +05:30
Alam 33d15b9890 Merge pull request #886 from adrienboulle/fix-825-untranslated-notifications
fix(merge-pdf): route result notifications through i18n
2026-10-21 12:33:35 +05:30
Alam 8cfd91ccb3 Merge pull request #853 from nipunrajk/fix/navigation-base-url
fix(navigation): respect BASE_URL in tool pages and navbar brand (Fixes #850)
2026-10-21 12:28:21 +05:30
Alam 5222f6c0bf Merge pull request #902 from mvanhorn/fix/647-sign-pdf-flatten-text-position
fix: keep flattened Sign PDF text at its placed position
2026-10-21 12:24:30 +05:30
Alam 6314db7b88 Merge pull request #885 from adrienboulle/fix-831-validate-signature
fix(validate-signature): detect signature dictionaries without /Type
2026-10-21 12:18:10 +05:30
Alam 02113e2579 Merge pull request #894 from nipunrajk/fix/markdown-task-list-links
fix(markdown): prevent task lists with links from corrupting DOM
2026-10-21 12:00:48 +05:30
alam00000 0d430027df feat: replace compression with Hyper Compress, fix PDF to Word color pass and stale engine URLs 2026-10-20 22:06:30 +05:30
alam00000 2f96455896 chore: stop tracking generated build files, fix sponsors workflow and refresh README hero 2026-10-19 18:14:45 +05:30
Adrien Boullé 448035b77b fix(merge-pdf): keep worker errors out of the alert, add missing fr key 2026-10-19 12:30:29 +02:00
Adrien Boullé ab8f4c20a8 fix(merge-pdf): route result notifications through i18n
Fixes #825
2026-10-19 12:30:29 +02:00
Adrien BoulléandClaude Opus 5.5 d86de593ca fix(validate-signature): detect signature dictionaries without /Type
/Type is optional in a signature dictionary (PDF 32000-1, 12.8.1) and some
signers leave it out, so those documents still reported "No Signatures
Found". A dictionary without /Type that carries both /ByteRange and
/Contents is now read as a signature; document timestamps
(/Type /DocTimeStamp, /SubFilter /ETSI.RFC3161) stay out because they hold
an RFC 3161 token, not a CMS signature over the document.

Also covers a /Contents placeholder of 74,506 hex characters, the largest
seen in real signed documents, which the former fixed scan window dropped.

Fixes #831

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 12:27:34 +02:00
alam00000 edd959f345 fix(security): harden sanitize, flatten, redaction, signature validation, CSP, proxies and CI 2026-10-19 14:45:00 +05:30
alam00000 70dc47d25c feat: update GitHub Actions workflow for PDF engine and viewer 2026-10-19 13:17:07 +05:30
alam00000 4c314b8a13 Update service worker cache version 2026-10-19 01:07:55 +05:30
Kelsey White 6d8ef7d694 Fix for issue 903: Crop tool now moves page focus to top after use 2026-10-16 13:09:32 -03:00
sergitost10 5a6d6bc411 feat(i18n): add Catalan language support 2026-10-15 09:49:50 +02:00
Matt Van Horn 4fd0b1d3e6 fix: keep flattened Sign PDF text at its placed position
readFormMatrix loads the appearance Matrix and uses the identity when
that entry is missing or is not six numbers. alignAppearanceToRect maps
the four BBox corners through that matrix and returns the scale and
translation that fit the transformed box to the annotation rectangle.
Those values are the cm concatenated before Do, and the original Matrix
stays on the form XObject so Do applies it once. A transformed box whose
width or height is under 0.001 is left unpainted, and that annotation is
still removed.

Fixes #647
2026-10-02 22:16:51 -07:00
nipunrajk 15c0435dde fix(markdown): prevent task lists with links from corrupting DOM
Disables label wrapping in markdown-it-task-lists plugin configuration.
When enabled, markdown-it-task-lists wraps task list content in <label>
tags, which malforms HTML structure when items contain links on the
same line and swallows subsequent DOM elements.

Fixes #715
2026-09-26 16:10:32 +05:30
nipunrajk daacdd2a2e test(navigation): constrain brand anchor regex to individual elements 2026-09-26 09:23:44 +05:30
nipunrajk 060d57639e test(navigation): tighten BASE_URL assertions per code review 2026-09-26 09:22:15 +05:30
nipunrajk 90fe106664 fix(navigation): respect BASE_URL in tool pages and navbar brand (Fixes #850) 2026-09-26 09:22:15 +05:30
Alam ea3f42db84 Merge pull request #869 from carminezac/fix/timestamp-default-cors-proxy
fix(timestamp): fall back to the default CORS proxy on official domains
2026-09-21 13:52:45 +05:30
alam00000 5a7927572f feat: add fallback font loading and handling for various languages 2026-09-17 13:56:16 +05:30