68a3608aee
fix: handle bracket notation arrays ( #2178 )
...
Co-authored-by: David Nguyen <davidngu28@gmail.com >
2025-11-12 16:38:06 +11:00
d05bfa9fed
feat: add envelopes api ( #2105 )
2025-11-07 14:17:52 +11:00
d2a009d52e
fix: allow direct template recipient dictation ( #2108 )
2025-11-01 12:44:34 +11:00
2eebc0e439
feat: add attachments ( #2091 )
2025-10-23 23:07:10 +11:00
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
3c646d9475
feat: remove email requirement for recipients ( #2040 )
2025-09-23 17:13:52 +10:00
93a3809f6a
fix: add maxLength limits to document input fields ( #1988 )
2025-09-09 17:52:03 +10:00
67501b45cf
feat: create document in a specific folder ( #1965 )
2025-08-23 00:12:17 +10:00
9b01a2318f
feat: download document via api v2 ( #1918 )
...
adds document download functionality to the API v2, returning
pre-signed S3 URLs that provide secure, time-limited access to document
files similar to what happens in the API v1 download document endpoint.
2025-08-05 12:29:21 +10:00
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
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
7a5a9eefe8
feat: upload template via API ( #1842 )
...
Allow users to upload templates via both v1 and v2 APIs. Similar to
uploading documents.
2025-07-23 14:41:12 +10:00
7487399123
feat: add more api logs ( #1870 )
...
Adds more detailed API logging using Pino
2025-06-30 19:46:32 +10:00
e6dc237ad2
feat: add organisations ( #1820 )
2025-06-10 11:49:52 +10:00
55c8632620
feat: password reauthentication for documents and recipients ( #1827 )
...
Adds password reauthentication to our existing reauth providers,
additionally swaps from an exclusive provider to an inclusive type where
multiple methods can be selected to offer a this or that experience.
2025-06-07 00:27:19 +10:00
17370749b4
feat: add folders ( #1711 )
2025-05-02 02:46:59 +10:00
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
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
f1525991dc
feat: dictate next signer ( #1719 )
...
Adds next recipient dictation functionality to document signing flow,
allowing assistants and signers to update the next recipient's
information during the signing process.
## Related Issue
N/A
## Changes Made
- Added form handling for next recipient dictation in signing dialogs
- Implemented UI for updating next recipient information
- Added e2e tests covering dictation scenarios:
- Regular signing with dictation enabled
- Assistant role with dictation
- Parallel signing flow
- Disabled dictation state
## Testing Performed
- Added comprehensive e2e tests covering:
- Sequential signing with dictation
- Assistant role dictation
- Parallel signing without dictation
- Form validation and state management
- Tested on Chrome and Firefox
- Verified recipient state updates in database
2025-03-21 13:27:04 +11:00
91ae818213
fix: missing prefillfields property from the api v2 documentation ( #1700 )
2025-03-12 22:54:58 +11:00
422770a8c7
feat: allow fields prefill when generating a document from a template ( #1615 )
...
This change allows API users to pre-fill fields with values by
passing the data in the request body. Example body for V2 API endpoint
`/api/v2-beta/template/use`:
```json
{
"templateId": 1,
"recipients": [
{
"id": 1,
"email": "signer1@mail.com ",
"name": "Signer 1"
},
{
"id": 2,
"email": "signer2@mail.com ",
"name": "Signer 2"
}
],
"prefillValues": [
{
"id": 14,
"fieldMeta": {
"type": "text",
"label": "my label",
"placeholder": "text placeholder test",
"text": "auto-sign value",
"characterLimit": 25,
"textAlign": "right",
"fontSize": 94,
"required": true
}
},
{
"id": 15,
"fieldMeta": {
"type": "radio",
"label": "radio label",
"placeholder": "new radio placeholder",
"required": false,
"readOnly": true,
"values": [
{
"id": 2,
"checked": true,
"value": "radio val 1"
},
{
"id": 3,
"checked": false,
"value": "radio val 2"
}
]
}
},
{
"id": 16,
"fieldMeta": {
"type": "dropdown",
"label": "dropdown label",
"placeholder": "DD placeholder",
"required": false,
"readOnly": false,
"values": [
{
"value": "option 1"
},
{
"value": "option 2"
},
{
"value": "option 3"
}
],
"defaultValue": "option 2"
}
}
],
"distributeDocument": false,
"customDocumentDataId": ""
}
```
2025-03-06 19:45:33 +11:00
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
383b5f78f0
feat: migrate nextjs to rr7
2025-02-13 14:10:38 +11:00
74bb230247
fix: add empty success responses ( #1600 )
2025-01-20 19:47:39 +11:00
0d3864548c
fix: bump trpc and openapi packages ( #1591 )
2025-01-19 22:07:02 +11:00
9e03747e43
feat: add create document beta endpoint ( #1584 )
2025-01-16 13:36:00 +11:00
901be70f97
feat: add consistent response schemas ( #1582 )
2025-01-14 00:43:35 +11:00
ebbe922982
feat: add template and field endpoints ( #1572 )
2025-01-11 15:33:20 +11:00
6fc5e565d0
fix: add document visibility to template ( #1566 )
...
Adds the visibility property to templates
2025-01-09 10:14:24 +11:00
4fab98c633
feat: allow switching document when using templates ( #1571 )
...
Adds the ability to upload a custom document when using a template.
This is useful when you have a given fixed template with placeholder
values that you want to decorate with Documenso fields but will then
create a final specialised document when sending it out to a given
recipient.
2025-01-07 16:13:35 +11:00
74382e21e7
feat: add get recipient route ( #1553 )
2024-12-26 17:25:14 +11:00
b4a7f1887d
feat: add trpc openapi ( #1535 )
2024-12-14 01:23:35 +09:00
5df1a6602e
fix: refactor search routes ( #1529 )
...
Refactor find endpoints to be consistent in terms of input and output.
2024-12-11 19:39:50 +09:00
fae9c0ca24
fix: refactor routers ( #1523 )
2024-12-10 16:11:20 +09:00
98d85b086d
feat: add initial api logging ( #1494 )
...
Improve API logging and error handling between client and server side.
2024-11-28 16:05:37 +07:00
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
f6bcf921d5
feat: add document distribution setting ( #1437 )
...
Add a document distribution setting which will allow us to further
configure how recipients currently receive documents.
2024-11-08 13:32:13 +09:00
4dd95016b1
feat: i18n for emails ( #1442 )
...
## Description
Support setting a document language that will control the language used
for sending emails to recipients. Additional work has been done to
convert all emails to using our i18n implementation so we can later add
controls for sending other kinds of emails in a users target language.
## Related Issue
N/A
## Changes Made
- Added `<Trans>` and `msg` macros to emails
- Introduced a new `renderEmailWithI18N` utility in the lib package
- Updated all emails to use the `<Tailwind>` component at the top level
due to rendering constraints
- Updated the `i18n.server.tsx` file to not use a top level await
## Testing Performed
- Configured document language and verified emails were sent in the
expected language
- Created a document from a template and verified that the templates
language was transferred to the document
2024-11-05 11:52:54 +11:00
cd3d9b701b
fix: external id null for documents created from templates ( #1362 )
2024-10-08 21:45:16 +11:00
3d644db286
feat: signing order ( #1290 )
...
Adds the ability to specify an optional signing order for documents.
When specified a document will be considered sequential with recipients
only being allowed to sign in the order that they were specified in.
2024-09-16 22:36:45 +10:00
e5f73452b3
fix: support dynamic external ids for direct templates ( #1274 )
...
Adds support for an `externalId` query param to be passed when linking a
user to a direct template. This external id will then be stored on the
document upon signing completion.
2024-08-09 11:06:17 +10:00
a9025b5d97
fix: use native URL parser instead of wrong regex ( #1206 )
...
Updates the current regex based approach for validating redirect urls to
instead use the native URL constructor which is available in browsers and
Node.js and handles several valid cases that were previously not working.
2024-07-31 15:26:05 +10:00
ae5ae111a6
chore: update failing tests
2024-07-22 20:52:17 +10:00
7ac4cd25e7
fix: update template limits
2024-07-19 13:16:26 +10:00
c3035dbd15
feat: add external id to documents and templates ( #1227 )
...
## Description
Adds the external ID column to documents and templates with an option to
configure it in the API or UI.
External ID's can be used to link a document or template to an external
system and identify them via webhooks, etc.
2024-07-13 16:45:09 +10:00
a757ab2303
feat: move template to team ( #1217 )
...
Allows users to move templates from their personal account to a team
account.
2024-07-05 13:20:27 +10:00
2eee2b4d2a
feat: send custom email to signers of direct template documents ( #1215 )
...
Introduces customization options for the document completion email
template to allow for custom email bodies and subjects for documents
created from direct templates.
## Testing Performed
- Verified correct rendering of custom email subject and body for direct
template documents
- Verified the all other completed email types are sent correctly
2024-07-05 13:03:22 +10:00
b08e153ca2
feat: add public profiles ( #1180 )
...
## Description
Add public profiles
## Changes
- Add profiles settings page for users and teams
- Add profiles page `/p/<url>`
## Not completed
- Pending tests
- UI changes to promote public profiles (sign up, etc)
2024-06-27 22:47:20 +10:00
963ba13aa6
feat: add more template API endpoints ( #1198 )
...
## Description
Update the API endpoint to support more actions for templates
## Changes Made
Add the following endpoints for templates:
- Get template
- Get templates
- Delete template
Get template(s) returns associated recipients and fields.
UI:
- Updated template delete button to have the destructive delete variant
## Testing Performed
Tested endpoints via /api/v1/openapi
Tested deleting templates via UI manually
## Test data
<details>
<summary>Delete template response</summary>
```json
{
"id": 32,
"type": "PRIVATE",
"title": "documenso-supporter-pledge.pdf",
"userId": 3,
"teamId": null,
"templateDocumentDataId": "clxva9b4h0001rrh7v0wdw97h",
"createdAt": "2024-06-26T03:35:45.065Z",
"updatedAt": "2024-06-26T03:35:45.065Z"
}
```
</details>
<details>
<summary>Get template response</summary>
```json
{
"id": 28,
"type": "PRIVATE",
"title": "blank_long.pdf",
"userId": 3,
"teamId": null,
"templateDocumentDataId": "clxu4vyty0003rrr52ue5ee4d",
"createdAt": "2024-06-25T08:17:38.418Z",
"updatedAt": "2024-06-26T03:36:33.890Z",
"templateMeta": {
"id": "clxvaacte0004rrh7s2k910nw",
"subject": "",
"message": "",
"timezone": "Australia/Melbourne",
"dateFormat": "yyyy-MM-dd hh:mm a",
"templateId": 28,
"redirectUrl": ""
},
"directLink": {
"token": "tBJHVFR75sC8m6hPfBTZd",
"enabled": true
},
"templateDocumentData": {
"id": "clxu4vyty0003rrr52ue5ee4d",
"type": "BYTES_64",
"data": "<PDF DATA>"
},
"Field": [
{
"id": 327,
"recipientId": 357,
"type": "SIGNATURE",
"page": 1,
"positionX": "55.8431952662722",
"positionY": "21.39588100686499",
"width": "29.58579881656805",
"height": "6.864988558352403"
},
{
"id": 328,
"recipientId": 357,
"type": "EMAIL",
"page": 1,
"positionX": "28.03254437869823",
"positionY": "72.99771167048056",
"width": "29.58579881656805",
"height": "6.864988558352403"
}
],
"Recipient": [
{
"id": 357,
"email": "direct.link@documenso.com ",
"name": "Direct link recipient",
"authOptions": {
"accessAuth": null,
"actionAuth": null
},
"role": "SIGNER"
},
{
"id": 359,
"email": "example@documenso.com ",
"name": "Example User",
"authOptions": {
"accessAuth": null,
"actionAuth": null
},
"role": "SIGNER"
}
]
}
```
</details>
<details>
<summary>Get templates response</summary>
```json
{
"templates": [
{
"id": 33,
"type": "PRIVATE",
"title": "documenso-supporter-pledge.pdf",
"userId": 3,
"teamId": null,
"templateDocumentDataId": "clxva9oaj0003rrh7hwdyg60o",
"createdAt": "2024-06-26T03:36:02.130Z",
"updatedAt": "2024-06-26T03:36:02.130Z",
"directLink": null,
"Field": [],
"Recipient": []
},
{
"id": 28,
"type": "PRIVATE",
"title": "blank_long.pdf",
"userId": 3,
"teamId": null,
"templateDocumentDataId": "clxu4vyty0003rrr52ue5ee4d",
"createdAt": "2024-06-25T08:17:38.418Z",
"updatedAt": "2024-06-26T03:36:33.890Z",
"directLink": {
"token": "tBJHVFR75sC8m6hPfBTZd",
"enabled": true
},
"Field": [
{
"id": 327,
"recipientId": 357,
"type": "SIGNATURE",
"page": 1,
"positionX": "55.8431952662722",
"positionY": "21.39588100686499",
"width": "29.58579881656805",
"height": "6.864988558352403"
},
{
"id": 328,
"recipientId": 357,
"type": "EMAIL",
"page": 1,
"positionX": "28.03254437869823",
"positionY": "72.99771167048056",
"width": "29.58579881656805",
"height": "6.864988558352403"
}
],
"Recipient": [
{
"id": 357,
"email": "direct.link@documenso.com ",
"name": "Direct link recipient",
"authOptions": {
"accessAuth": null,
"actionAuth": null
},
"role": "SIGNER"
},
{
"id": 359,
"email": "example@documenso.com ",
"name": "Example User",
"authOptions": {
"accessAuth": null,
"actionAuth": null
},
"role": "SIGNER"
}
]
}
],
"totalPages": 2
}
```
</details>
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Added support for team-based template deletion in the dashboard.
- Enhanced API to manage templates, including fetching and deleting
templates by team ID.
- **Bug Fixes**
- Improved error handling for template operations, ensuring better
feedback when templates are not found.
- **Refactor**
- Updated various components and functions to include `teamId` for more
robust template management.
- **Documentation**
- Expanded schema definitions to detail new structures for template and
team interactions.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-06-27 15:44:16 +10:00
5514dad4d8
feat: add public profiles
2024-06-06 15:28:02 +10:00