Seems there's a memory leak in gpu rendering with skia canvas
where contexts can live for much longer than expected escaping gc
cleanup
CPU rendering seems better albeit a bit slower.
Synthetic tests were ran with `--expose-gc` to simulate load over time.
When flattening PDF forms, some appearance streams lack the required
/Subtype /Form dictionary entry needed when used as XObjects. This
causes
corruption in Adobe Reader which fails to render these flattened fields.
Per PDF spec, Form XObject streams require:
- /Subtype /Form (required)
- /FormType 1 (optional)
The normalizeAppearanceStream function ensures these entries exist
before
adding appearance streams as XObjects to the page content stream.
Fixes rendering issues where flattened fields don't display in PDF
viewers.
Add fullName prop to signature pad components to automatically populate
typed signature
field with signer's name. Updates signature dialog, type component, and
all signing forms
across embed, document, template, and envelope flows to pass through the
user's full
name for better user experience.
Add proper cleanup for PDF.js pages and loading task to prevent memory
leaks when
processing multiple PDF pages. Ensure page cleanup is called after each
page is
rendered and both PDF document and loading task are properly destroyed
with error
handling.
Previously you had to have explicit knowledge of the
feature and enable it in order to use AI assisted field
detection.
This surfaces it by having a secondary dialog prompting
for enablement.
Also includes a fix for CC recipients not getting marked
as signed in weird edge cases.
Upgrade the `@react-email/render` package to handle
suspense during renders.
We could have just swapped to `renderAsync` for the 0.0.x
version of the package but it's better to upgrade as part
of this change.
CI has been run locally and emails have been verified to
work and render as expected in our local mail trap.
Adds documentation for the recently added AI features
Includes details for how users can enable AI features for their team or
organisation
Also includes details for how self-hosters can setup their instance to
allow for AI features
We were previously omitting cmaps meaning that
when signing documents with certain UTF-8 characters or CJK characters
they would appear as outlined squares in the pdf viewer despite the
actual pdf looking as expected with the characters displaying correctly.
Currently on inngest the sealing task fails during decoration stating
that it can not find the step "xxx"
My running theory is that this was due to it being a
Promise.all(map(...)) even though that isn't explicitly disallowed.
This change turns it into a for loop collecting promises to be awaited
after the fact.
Local inngest testing looks promising.
Use the `select_account` prompt for SSO OIDC to avoid constantly asking
for credentials to be entered with a client has an existing session with
the SSO provider.
Adds the missing `viewedDocument` method call for embedded signing.
I believe this had previously been added but was lost as the result of a
merge conflict being resolved.
Improves the mobile signing UX making actions available via the floating
navbar more obvious.
Also adds an automatic switch to the complete button once all fields
have been signed.
On larger documents we could accidentally start trying to render fields
while not all pages of the PDF have loaded due to us checking for a
single page existing. This would cause an error to be thrown, hard
locking those documents.
This change resolves this by grabbing the highest page number from the
given fields and using it for the visibility check instead.