516e237966
fix: resolve issue with uploading templates
2025-05-03 08:09:44 +10:00
0931c472a7
fix: resolve issue with uploading templates
2025-05-03 07:38:48 +10:00
17370749b4
feat: add folders ( #1711 )
2025-05-02 02:46:59 +10:00
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
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
63d990ce8d
fix: optional fields in embeds ( #1691 )
2025-03-09 14:41:17 +11:00
65be37514f
fix: prefill fields ( #1689 )
...
Users can now selectively choose which properties to pre-fill for each
field - from just a label to all available properties.
2025-03-07 09:09:15 +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
383b5f78f0
feat: migrate nextjs to rr7
2025-02-13 14:10:38 +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
7d0a9c6439
fix: refactor prisma relations ( #1581 )
2025-01-13 13:41:53 +11:00
723e1b4ea2
fix: include all template meta in findTemplates
2025-01-13 09:34:23 +11:00
948d9c24cf
fix: broken direct template webhook ( #1579 )
2025-01-11 21:42:33 +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
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
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
b27fd800ed
fix: add distribution settings to external api
2024-11-29 14:10:48 +11: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
23a0537648
feat: add global settings for teams ( #1391 )
...
## Description
This PR introduces global settings for teams. At the moment, it allows
team admins to configure the following:
* The default visibility of the documents uploaded to the team account
* Whether to include the document owner (sender) details when sending
emails to the recipients.
### Include Sender Details
If the Sender Details setting is enabled, the emails sent by the team
will include the sender's name:
> "Example User" on behalf of "Example Team" has invited you to sign
"document.pdf"
Otherwise, the email will say:
> "Example Team" has invited you to sign "document.pdf"
### Default Document Visibility
This new option allows users to set the default visibility for the
documents uploaded to the team account. It can have the following
values:
* Everyone
* Manager and above
* Admins only
If the default document visibility isn't set, the document will be set
to the role of the user who created the document:
* If a user with the "User" role creates a document, the document's
visibility is set to "Everyone".
* Manager role -> "Manager and above"
* Admin role -> "Admins only"
Otherwise, if there is a default document visibility value, it uses that
value.
#### Gotcha
To avoid issues, the `document owner` and the `recipient` can access the
document irrespective of their role. For example:
* If a team member with the role "Member" uploads a document and the
default document visibility is "Admins", only the document owner and
admins can access the document.
* Similar to the other scenarios.
* If an admin uploads a document and the default document visibility is
"Admins", the recipient can access the document.
* The admins have access to all the documents.
* Managers have access to documents with the visibility set to
"Everyone" and "Manager and above"
* Members have access only to the documents with the visibility set to
"Everyone".
## Testing Performed
Tested it locally.
2024-11-08 22:50:49 +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
4fa6dc1e21
feat: add template page ( #1395 )
...
Add a template page view to allow users to see more details about a
template at a glance.
2024-11-05 17:36:30 +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
885349ad94
fix: missing signing order when using templates ( #1425 )
2024-11-03 20:17:41 +09:00
28514ba2e7
fix: duplicate templates ( #1434 )
2024-11-01 21:29:38 +11:00
4a6238dc52
chore: show signing order when creating a document from template ( #1410 )
...
### Templates without signing order

### Template with signing order

2024-10-23 10:20:27 +11:00
6fa5f63b69
fix: trigger webhook when a direct link signer signs a document ( #1409 )
2024-10-23 09:50:23 +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
a1a8a174bf
feat: embed signing experience ( #1322 )
2024-09-04 23:13:00 +10:00
75c8772a02
feat: web i18n ( #1286 )
2024-08-27 20:34:39 +09:00
29910ab2a7
feat: add initials field type ( #1279 )
...
Adds a new field type that enables document recipients to add
their `initials` on the document.
2024-08-12 23:29:32 +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
7b5c57e8af
chore: add more field types ( #1141 )
...
Adds a number of new field types and capabilities to existing fields.
A massive change with far too many moving pieces to document in a single commit.
2024-07-18 23:45:44 +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
5b4e6e530b
Merge branch 'main' into feat/public-profiles
2024-06-27 12:10:45 +10:00
51ad6a6ff8
fix: direct links for teams are generated wrong
2024-06-25 16:09:19 +00:00
cfb52161d9
Merge branch 'main' into feat/public-profiles
2024-06-13 15:20:26 +10:00
5514dad4d8
feat: add public profiles
2024-06-06 15:28:02 +10:00