Lucas Smith
7f5f2b22ed
feat: add seal-document sweep job and admin unsealed documents page ( #2563 )
2026-03-05 13:56:40 +11:00
Lucas Smith
c112392da9
feat: add admin email domain management and sync job ( #2538 )
2026-02-25 15:14:18 +11:00
Lucas Smith
653ab3678a
feat: better ratelimiting ( #2520 )
...
Replace hono-rate-limiter with a Prisma/PostgreSQL bucketed counter
approach that works correctly across multiple instances without sticky
sessions.
- Add RateLimit model with composite PK (key, action, bucket) and atomic
upsert
- Create rate limit factory with window parsing, bucket computation, and
fail-open
- Define auth-tier and API-tier rate limit instances
- Add Hono middleware, rateLimitResponse helper, and tRPC
assertRateLimit helper
- Wire rate limit headers through AppError constructor (was declared but
never assigned)
- Apply rate limits to auth routes (email-password, passkey), tRPC
routes
(2FA email, link org account), API routes, and file upload endpoints
- Add cleanup cron job for expired rate limit rows (batched delete every
15 min)
- Remove hono-rate-limiter dependency
2026-02-20 12:23:02 +11:00
Lucas Smith
006b1d0a57
feat: per-recipient envelope expiration ( #2519 )
2026-02-20 11:36:20 +11:00
Ephraim Duncan
d66c330d46
fix: match cert and audit log page dimensions to source document ( #2473 )
2026-02-12 18:25:11 +11:00
David Nguyen
0d65693d55
fix: highlight rejected certificate text ( #2478 )
...
## Description
- Update the rejected certificate so that is it more clear on who
rejected the document.
- Updated the audit log generation so that the completed audit log is
included
### Before
<img width="681" height="597" alt="image"
src="https://github.com/user-attachments/assets/3dab41c1-c86f-4555-8d50-3d9245be65d5 "
/>
### After
Note that the order of the recipient is different in this case
<img width="818" height="769" alt="image"
src="https://github.com/user-attachments/assets/71f0ac12-5859-47b4-8980-2420ef949d18 "
/>
---------
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com >
Co-authored-by: Lucas Smith <me@lucasjamessmith.me >
2026-02-12 16:06:43 +11:00
Lucas Smith
1669216a91
fix: flatten pdf-lib form fields before sealing document ( #2441 )
...
- Fixes checkbox fields not displaying correctly in sealed documents by
calling `flatten()` on the pdf-lib form before saving
2026-02-03 14:24:23 +11:00
Lucas Smith
9035240b4d
refactor: replace pdf-sign with libpdf/core for PDF operations ( #2403 )
...
Migrate from @documenso/pdf-sign and @cantoo/pdf-lib to @libpdf/core
for all PDF manipulation and signing operations. This includes:
- New signing transports for Google Cloud KMS and local certificates
- Consolidated PDF operations using libpdf API
- Added TSA (timestamp authority) helper for digital signatures
- Removed deprecated flatten and insert utilities
- Updated tests to use new PDF library
2026-01-21 15:16:23 +11:00
David Nguyen
c2ea5e5859
fix: migrate certificate generation ( #2251 )
...
Generate certificates and audit logs using Konva instead of browserless.
This should:
- Reduce the changes of generations failing
- Improve sealing speed
2026-01-06 14:26:19 +11:00
Chenyang Gao
2ca5d6cfaa
fix: local job retry loop for webhook calls ( #2295 )
2025-12-15 13:04:35 +11:00
Ryan Wagoner
04814ca14e
fix: on error job should resubmit with isRetry ( #2072 )
2025-12-15 13:03:04 +11:00
Lucas Smith
4d3d1b8d14
fix: make ai features more discoverable ( #2305 )
...
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.
2025-12-09 15:30:48 +11:00
David Nguyen
b51f562224
feat: add empty emails for envelopes ( #2267 )
2025-12-06 13:38:10 +11:00
David Nguyen
e364b08b6a
fix: optimize webhook routing ( #2236 )
2025-11-25 11:43:23 +11:00
Lucas Smith
ae31860b16
fix: USE_INTERNAL_URL_BROWSERLESS breaks builds ( #2233 )
2025-11-23 23:49:08 +11:00
Lucas Smith
d2176627ca
chore: dependency updates ( #2229 )
2025-11-22 20:28:20 +11:00
David Nguyen
11d9bde8f8
fix: improve sealing speed ( #2210 )
2025-11-19 14:15:12 +11:00
Lucas Smith
d65866156d
fix: remove parallel steps ( #2152 )
2025-11-08 13:57:26 +11:00
Lucas Smith
37a2634aca
feat: support optimizeParallelism for inngest jobs ( #2151 )
2025-11-08 12:53:13 +11:00
Lucas Smith
db5524f8ce
fix: resolve issue with sealing task on inngest ( #2146 )
...
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.
2025-11-08 00:48:13 +11:00
Lucas Smith
48626b9169
fix: support utf8 filenames download ( #2145 )
2025-11-07 23:41:31 +11:00
David Nguyen
5cdd7f8623
fix: envelope styling ( #2102 )
2025-10-27 16:11:10 +11:00
David Nguyen
03eb6af69a
feat: polish envelopes ( #2090 )
...
## Description
The rest of the owl
2025-10-24 16:22:06 +11:00
David Nguyen
7f09ba72f4
feat: add envelopes ( #2025 )
...
This PR is handles the changes required to support envelopes. The new
envelope editor/signing page will be hidden during release.
The core changes here is to migrate the documents and templates model to
a centralized envelopes model.
Even though Documents and Templates are removed, from the user
perspective they will still exist as we remap envelopes to documents and
templates.
2025-10-14 21:56:36 +11:00
David Nguyen
44f5da95b3
chore: refactor routes ( #1992 )
2025-08-25 21:00:35 +10:00
David Nguyen
d7e5a9eec7
fix: refactor document router ( #1990 )
2025-08-25 08:23:12 +10:00
Catalin Pit
d1eb14ac16
feat: include audit trail log in the completed doc ( #1916 )
...
This change allows users to include the audit trail log in the completed
documents; similar to the signing certificate.
https://github.com/user-attachments/assets/d9ae236a-2584-4ad6-b7bc-27b3eb8c74d3
It also solves the issue with the text cutoff.
2025-08-07 11:44:59 +10:00
David Nguyen
c48486472a
fix: add missing email reply validation ( #1934 )
...
## Description
General fixes to the email domain features
Changes made:
- Add "email" validation for "Reply-To email" fields
- Fix issue where you can't remove the "Reply-To" email after it's set
- Fix issue where setting the "Sender email" back to Documenso would
still send using the org/team pref
2025-08-02 00:40:41 +10:00
David Nguyen
3409aae411
feat: add email domains ( #1895 )
...
Implemented Email Domains which allows Platform/Enterprise customers to
send emails to recipients using their custom emails.
2025-07-24 16:05:00 +10:00
David Nguyen
e6dc237ad2
feat: add organisations ( #1820 )
2025-06-10 11:49:52 +10:00
Lucas Smith
d1eddb02c4
fix: add missing awaits for font normalization
2025-06-07 02:24:59 +10:00
Lucas Smith
12ada567f5
feat: embed authoring part two ( #1768 )
2025-05-01 23:32:56 +10:00
Ephraim Duncan
bdb0b0ea88
feat: certificate qrcode ( #1755 )
...
Adds document access tokens and QR code functionality to enable secure
document sharing via URLs. It includes a new document access page that
allows viewing and downloading documents through tokenized links.
2025-04-28 11:30:09 +10:00
Ephraim Duncan
6540291055
feat: migrate webhook execution to background jobs ( #1694 )
2025-04-24 06:00:53 +00:00
David Nguyen
193325717d
fix: rework fields ( #1697 )
...
Rework:
- Field styling to improve visibility
- Field insertions, better alignment, centering and overflows
## Changes
General changes:
- Set default text alignment to left if no meta found
- Reduce borders and rings around fields to allow smaller fields
- Removed lots of redundant duplicated code surrounding field rendering
- Make fields more consistent across viewing, editing and signing
- Add more transparency to fields to allow users to see under fields
- No more optional/required/etc colors when signing, required fields
will be highlighted as orange when form is "validating"
Highlighted internal changes:
- Utilize native PDF fields to insert text, instead of drawing text
- Change font auto scaling to only apply to when the height overflows
AND no custom font is set
⚠️ Multiline changes:
Multi line is enabled for a field under these conditions
1. Field content exceeds field width
2. Field includes a new line
3. Field type is TEXT
## [BEFORE] Field UI Signing

## [AFTER] Field UI Signing

## [BEFORE] Signing a checkbox


## [AFTER] Signing a checkbox


## [BEFORE] What a 2nd recipient sees once someone else signed a
document

## [AFTER] What a 2nd recipient sees once someone else signed a document

## **[BEFORE]** Inserting fields

## **[AFTER]** Inserting fields

## Overflows, multilines and field alignments testing
Debugging borders:
- Red border = The original field placement without any modifications
- Blue border = The available space to overflow
### Single line overflows and field alignments
This is left aligned fields, overflow will always go to the end of the
page and will not wrap

This is center aligned fields, the max width is the closest edge to the
page * 2

This is right aligned text, the width will extend all the way to the
left hand side of the page

### Multiline line overflows and field alignments
These are text fields that can be overflowed

Another example of left aligned text overflows with more text

2025-04-23 21:40:42 +10:00
David Nguyen
063fd32f18
feat: add signature configurations ( #1710 )
...
Add ability to enable or disable allowed signature types:
- Drawn
- Typed
- Uploaded
**Tabbed style signature dialog**

**Document settings**

**Team preferences**

- Add multiselect to select allowed signatures in document and templates
settings tab
- Add multiselect to select allowed signatures in teams preferences
- Removed "Enable typed signatures" from document/template edit page
- Refactored signature pad to use tabs instead of an all in one
signature pad
Added E2E tests to check settings are applied correctly for documents
and templates
2025-03-24 17:13:11 +11:00
Lucas Smith
63a4bab0fe
feat: better document rejection ( #1702 )
...
Improves the existing document rejection process by actually marking a
document as completed cancelling further actions.
## Related Issue
N/A
## Changes Made
- Added a new rejection status for documents
- Updated a million areas that check for document completion
- Updated email sending, so rejection is confirmed for the rejecting
recipient while other recipients are notified that the document is now
cancelled.
## Testing Performed
- Ran the testing suite to ensure there are no regressions.
- Performed manual testing of current core flows.
2025-03-13 15:08:57 +11:00
David Nguyen
25bb6ffe77
fix: imports
2025-03-03 14:49:28 +11:00
David Nguyen
c1c7cfaf8b
chore: cleanup
2025-02-25 16:37:36 +11:00
David Nguyen
a319ea0f5e
fix: add public profiles tests
2025-02-19 16:07:04 +11:00
Lucas Smith
c9e8a32471
feat: bulk send templates via csv ( #1578 )
...
Implements a bulk send feature allowing users to upload a CSV file to
create multiple documents from a template. Includes CSV template
generation, background processing, and email notifications.
2025-02-13 18:44:29 +11:00
David Nguyen
383b5f78f0
feat: migrate nextjs to rr7
2025-02-13 14:10:38 +11:00
David Nguyen
7d0a9c6439
fix: refactor prisma relations ( #1581 )
2025-01-13 13:41:53 +11:00
Catalin Pit
487f52e194
feat: enable optional fields ( #1470 )
2024-12-27 19:30:44 +11:00
Ephraim Duncan
a1a2d0801b
feat: notify owner when a recipient signs ( #1549 )
2024-12-26 22:04:13 +11:00
Mythie
22c9fb777b
fix: perf improvements
2024-12-18 15:01:57 +11:00
Mythie
8ec69388a5
fix: add document rejection webhook
...
Adds the document rejection webhook since it was missing.
Additionally, normalises and standardises the webhook body.
2024-12-04 14:35:20 +11:00
Mythie
f27d0f342c
fix: putPdfFile to always include file extension
2024-12-02 22:06:53 +11:00
Catalin Pit
62806298cf
fix: wrong signing invitation message ( #1497 )
2024-12-02 07:47:11 +11:00
Catalin Pit
ab654a63d8
chore: enable typed signature by default ( #1436 )
...
Enable typed signature by default and also add the option to set a typed
signature in the profile page.
2024-11-26 21:03:44 +11:00