Ephraim Duncan
9e714d607e
feat: disable 2fa with backup codes ( #1314 )
...
Allow disabling two-factor authentication (2FA) by using either their
authenticator app (TOTP) or a backup code.
2024-08-29 11:00:57 +10:00
Ephraim Duncan
2c9136498c
feat: update team email templates. ( #1229 )
...
Updates the email templates to include team information when sent
from a team context.
2024-08-20 15:41:19 +10:00
Ephraim Duncan
06c0a50401
feat: copy and paste fields ( #1193 )
...
Adds keyboard shortcuts for copying and pasting fields, additionally adds the ability
to duplicate a field via the UI.
2024-08-20 13:32:53 +10:00
Ephraim Duncan
e0065a8731
fix: show signup option only to users without existing accounts ( #1221 )
...
Changes the signup CTA to only display if the recipient doesn't already have an account.
2024-08-08 10:47:00 +10:00
Ephraim Duncan
0f86eed6ac
fix: add new environmental variables for render deployment ( #1174 )
...
Updates the `render.yaml` configuration file by adding new environment
variables
2024-07-30 16:14:31 +10:00
Ephraim Duncan
a8febae87e
chore: team stuff ( #1228 )
...
- Added functionality to decline team invitations
- Added email notifications for when team is deleted
- Added email notifications for team members joining and leaving
2024-07-25 14:27:19 +10:00
Ephraim Duncan and Lucas Smith
f647244e07
chore: update signup text ( #1234 )
...
Co-authored-by: Lucas Smith <me@lucasjamessmith.me >
2024-07-23 08:24:21 +00:00
Ephraim Duncan
f8349bb927
chore: add new colors ( #1224 )
...
Adds the colors from our design system revamp into our current CSS vars to be used
at a later point.
2024-07-23 14:51:37 +10:00
Ephraim Duncan
cb892bcbb2
feat: add user conversion count to admin panel ( #1150 )
...
Displays the count of users who signed up after signing at least one
document in the admin panel
2024-07-05 14:02:22 +10:00
Ephraim Duncan
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
Ephraim Duncan
2c320e8b92
fix: use team avatar everywhere ( #1220 )
...
Expands team avatar support across various components and pages of
the application.
2024-07-05 13:05:22 +10:00
Ephraim Duncan
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
Ephraim Duncan
92c09c5850
feat: move document to team ( #1210 )
...
Introduces a new dialog component allowing users to move documents
between teams with included audit logging.
2024-07-02 12:47:24 +10:00
Ephraim Duncan
db827b749d
Merge branch 'main' into admin/stats
2024-06-25 15:06:27 +00:00
Ephraim Duncan and David Nguyen
16c6d4a8bd
fix: show field on pending document ( #1158 )
...
## Description
This pull request introduces the functionality to display pending fields
on the document page view. This enhancement allows users to see which
fields are pending and need to be completed.

## Changes Made
- Added `getPendingFieldsForDocument` function in
`packages/lib/server-only/field/get-pending-fields-for-document.ts` to
fetch pending fields for a document.
- Created a new component `DocumentPendingFields` in
`document-pending-fields.tsx` to display the pending fields with options
to hide individual fields.
## Testing Performed
- Tested the new feature by creating documents with pending fields and
verifying their display on the document page view.
- Verified that the pending fields are correctly hidden when the "Hide
field" button is clicked.
- Ran unit tests for the new functionality and existing components to
ensure no regressions.
## Checklist
- [x] I have tested these changes locally and they work as expected.
- [x] I have added/updated tests that prove the effectiveness of these
changes.
- [x] I have updated the documentation to reflect these changes, if
applicable.
- [x] I have followed the project's coding style guidelines.
- [ ] I have addressed the code review feedback from the previous
submission, if applicable.
## Additional Notes
No additional notes.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Introduced logic for handling pending and completed document fields
based on signing status.
- **Refactor**
- Replaced `getCompletedFieldsForDocument` with `getFieldsForDocument`.
- Updated `DocumentReadOnlyFields` component to `DocumentPendingFields`.
- **Bug Fixes**
- Improved field retrieval accuracy and display based on recipient
signing status.
- **Style**
- Enhanced UI elements with new icons and button adjustments for better
user interaction.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: David Nguyen <davidngu28@gmail.com >
2024-06-24 16:08:06 +10:00
Ephraim Duncan
c470e4d516
Merge branch 'main' into admin/stats
2024-06-13 05:47:17 +00:00
Ephraim Duncan
9b92e38c52
chore: add more tests ( #1079 )
2024-05-27 11:17:03 +07:00
Ephraim Duncan
f1c6fc6fb7
chore: update gitpod config ( #1151 )
...
## Description
Remove deprecated config from `gitpod.yaml`
The output when it is run in Gitpod
```
HISTFILE=/workspace/.gitpod/cmd-0 history -r; {
npm i &&
npm run dx:up &&
cp .env.example .env &&
set -a; source .env &&
export NEXTAUTH_URL="$(gp url 3000)" &&
export NEXT_PUBLIC_WEBAPP_URL="$(gp url 3000)" &&
export NEXT_PUBLIC_MARKETING_URL="$(gp url 3001)"
} && {
npm run d
}
gitpod /workspace/documenso (chore/update-gitpod) $ HISTFILE=/workspace/.gitpod/cmd-0 history -r; {
> npm i &&
> npm run dx:up &&
> cp .env.example .env &&
> set -a; source .env &&
> export NEXTAUTH_URL="$(gp url 3000)" &&
> export NEXT_PUBLIC_WEBAPP_URL="$(gp url 3000)" &&
> export NEXT_PUBLIC_MARKETING_URL="$(gp url 3001)"
>
> } && {
> npm run d
> }
> prepare
> husky install
install command is deprecated
added 1842 packages, and audited 1859 packages in 1m
438 packages are looking for funding
run `npm fund` for details
16 vulnerabilities (1 low, 11 moderate, 3 high, 1 critical)
To address issues that do not require attention, run:
npm audit fix
To address all issues possible (including breaking changes), run:
npm audit fix --force
Some issues need review, and may require choosing
a different dependency.
Run `npm audit` for details.
npm notice
npm notice New minor version of npm available! 10.5.2 -> 10.8.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v10.8.0
npm notice Run npm install -g npm@10.8.0 to update!
npm notice
> dx:up
> docker compose -f docker/development/compose.yml up -d
[+] Running 33/3
✔ minio Pulled 6.6s
✔ database Pulled 11.3s
✔ inbucket Pulled 6.1s
[+] Running 5/5
✔ Network documenso-development_default Created 0.1s
✔ Volume "documenso-development_minio" Created 0.0s
✔ Container database Started 1.0s
✔ Container minio Started 1.0s
✔ Container mailserver Started 1.0s
> d
> npm run dx && npm run dev
> dx
> npm i && npm run dx:up && npm run prisma:migrate-dev && npm run prisma:seed
> prepare
> husky install
install command is deprecated
up to date, audited 1859 packages in 4s
438 packages are looking for funding
run `npm fund` for details
18 vulnerabilities (1 low, 11 moderate, 5 high, 1 critical)
To address issues that do not require attention, run:
npm audit fix
To address all issues possible (including breaking changes), run:
npm audit fix --force
Some issues need review, and may require choosing
a different dependency.
Run `npm audit` for details.
> dx:up
> docker compose -f docker/development/compose.yml up -d
[+] Running 3/0
✔ Container mailserver Running 0.0s
✔ Container minio Running 0.0s
✔ Container database Running 0.0s
> prisma:migrate-dev
> npm run with:env -- npm run prisma:migrate-dev -w @documenso/prisma
> with:env
> dotenv -e .env -e .env.local -- npm run prisma:migrate-dev -w @documenso/prisma
> @documenso/prisma@1.0.0 prisma:migrate-dev
> prisma migrate dev --skip-seed
Prisma schema loaded from schema.prisma
Datasource "db": PostgreSQL database "documenso", schema "public" at "127.0.0.1:54320"
Applying migration `20230404095503_initial_migration`
Applying migration `20230411134605_doc_208`
Applying migration `20230421134018_doc_214_add_signed_at_field`
Applying migration `20230505085625_create_subscription_table`
Applying migration `20230505085908_update_unique_constraint`
Applying migration `20230505091928_add_past_due_value`
Applying migration `20230605122017_password_reset`
Applying migration `20230605164015_expire_password_reset_token`
Applying migration `20230617040606_add_name_field`
Applying migration `20230617041623_add_email_field`
Applying migration `20230621130930_add_width_and_height_for_fields`
Applying migration `20230621131348_add_document_id_and_email_index`
Applying migration `20230621133446_migrate_field_position_to_float`
Applying migration `20230829165148_user_sharing_link`
Applying migration `20230829180915_recipient_id_for_user_id`
Applying migration `20230830053354_add_service_user`
Applying migration `20230901083000_add_user_signature_column`
Applying migration `20230907041233_add_document_data_table`
Applying migration `20230907074451_insert_old_data_into_document_data_table`
Applying migration `20230907075057_user_roles`
Applying migration `20230907080056_add_created_at_and_updated_at_columns`
Applying migration `20230907082622_remove_old_document_data`
Applying migration `20230912011344_reverse_document_data_relation`
Applying migration `20230914031347_remove_redundant_created_column`
Applying migration `20230917190854_password_reset_token`
Applying migration `20230918111438_update_subscription_constraints_and_columns`
Applying migration `20230920052232_document_meta`
Applying migration `20230920060743_update_share_link_schema`
Applying migration `20230920124941_fix_documentmeta_relation`
Applying migration `20230922121421_fix_document_meta_schema`
Applying migration `20231013012902_add_document_share_link_delete_cascade`
Applying migration `20231025074705_add_email_confirmation_registration`
Applying migration `20231028094931_add_user_timestamp_columns`
Applying migration `20231028095542_use_now_for_last_signed_in`
Applying migration `20231030055821_add_database_indexes`
Applying migration `20231031072857_verify_existing_users`
Applying migration `20231103044612_add_completed_date`
Applying migration `20231105184518_add_2fa`
Applying migration `20231123132053_public_api_api_token`
Applying migration `20231202134005_deletedocuments`
Applying migration `20231202220928_add_recipient_roles`
Applying migration `20231205000309_add_cascade_delete_for_verification_tokens`
Applying migration `20231206073509_add_multple_subscriptions`
Applying migration `20231207134820_add_document_meta_dateformat_timezone`
Applying migration `20231220124343_add_cascade_delete_user_apitoken`
Applying migration `20231221101005_add_templates`
Applying migration `20240115031508_add_password_to_document_meta`
Applying migration `20240131004516_add_user_security_audit_logs`
Applying migration `20240131132916_verify_paid_users`
Applying migration `20240205040421_add_teams`
Applying migration `20240205120648_create_delete_account`
Applying migration `20240206051948_add_teams_templates`
Applying migration `20240206111230_add_document_meta_redirect_url`
Applying migration `20240206131417_add_user_webhooks`
Applying migration `20240208135802_make_expiry_date_optional_api_tokens`
Applying migration `20240209023519_add_document_audit_logs`
Applying migration `20240220115435_add_public_profile_url_bio`
Applying migration `20240221055920_support_team_tokens`
Applying migration `20240222183156_display_banner`
Applying migration `20240222183231_banner_show`
Applying migration `20240222185936_remove_custom`
Applying migration `20240222230527_change_banner_to_site_settings_model`
Applying migration `20240222230604_add_site_banner_to_site_settings`
Applying migration `20240224085633_extend_webhook_trigger_events`
Applying migration `20240226035048_add_recipient_referential_action_for_fields`
Applying migration `20240227003622_migrate_to_cuids_for_webhooks`
Applying migration `20240227015420_add_webhook_call_table`
Applying migration `20240227023747_add_team_webhooks`
Applying migration `20240227031228_add_event_to_webhook_call_model`
Applying migration `20240227111633_rework_user_profiles`
Applying migration `20240306060259_add_passkeys`
Applying migration `20240311113243_add_document_auth`
Applying migration `20240327074701_add_secondary_verification_id`
Applying migration `20240408083413_add_form_values_column`
Applying migration `20240408142543_add_recipient_document_delete`
Applying migration `20240418140819_remove_impossible_field_optional_states`
Applying migration `20240424072655_update_foreign_key_constraints`
The following migration(s) have been applied:
migrations/
└─ 20230404095503_initial_migration/
└─ migration.sql
└─ 20230411134605_doc_208/
└─ migration.sql
└─ 20230421134018_doc_214_add_signed_at_field/
└─ migration.sql
└─ 20230505085625_create_subscription_table/
└─ migration.sql
└─ 20230505085908_update_unique_constraint/
└─ migration.sql
└─ 20230505091928_add_past_due_value/
└─ migration.sql
└─ 20230605122017_password_reset/
└─ migration.sql
└─ 20230605164015_expire_password_reset_token/
└─ migration.sql
└─ 20230617040606_add_name_field/
└─ migration.sql
└─ 20230617041623_add_email_field/
└─ migration.sql
└─ 20230621130930_add_width_and_height_for_fields/
└─ migration.sql
└─ 20230621131348_add_document_id_and_email_index/
└─ migration.sql
└─ 20230621133446_migrate_field_position_to_float/
└─ migration.sql
└─ 20230829165148_user_sharing_link/
└─ migration.sql
└─ 20230829180915_recipient_id_for_user_id/
└─ migration.sql
└─ 20230830053354_add_service_user/
└─ migration.sql
└─ 20230901083000_add_user_signature_column/
└─ migration.sql
└─ 20230907041233_add_document_data_table/
└─ migration.sql
└─ 20230907074451_insert_old_data_into_document_data_table/
└─ migration.sql
└─ 20230907075057_user_roles/
└─ migration.sql
└─ 20230907080056_add_created_at_and_updated_at_columns/
└─ migration.sql
└─ 20230907082622_remove_old_document_data/
└─ migration.sql
└─ 20230912011344_reverse_document_data_relation/
└─ migration.sql
└─ 20230914031347_remove_redundant_created_column/
└─ migration.sql
└─ 20230917190854_password_reset_token/
└─ migration.sql
└─ 20230918111438_update_subscription_constraints_and_columns/
└─ migration.sql
└─ 20230920052232_document_meta/
└─ migration.sql
└─ 20230920060743_update_share_link_schema/
└─ migration.sql
└─ 20230920124941_fix_documentmeta_relation/
└─ migration.sql
└─ 20230922121421_fix_document_meta_schema/
└─ migration.sql
└─ 20231013012902_add_document_share_link_delete_cascade/
└─ migration.sql
└─ 20231025074705_add_email_confirmation_registration/
└─ migration.sql
└─ 20231028094931_add_user_timestamp_columns/
└─ migration.sql
└─ 20231028095542_use_now_for_last_signed_in/
└─ migration.sql
└─ 20231030055821_add_database_indexes/
└─ migration.sql
└─ 20231031072857_verify_existing_users/
└─ migration.sql
└─ 20231103044612_add_completed_date/
└─ migration.sql
└─ 20231105184518_add_2fa/
└─ migration.sql
└─ 20231123132053_public_api_api_token/
└─ migration.sql
└─ 20231202134005_deletedocuments/
└─ migration.sql
└─ 20231202220928_add_recipient_roles/
└─ migration.sql
└─ 20231205000309_add_cascade_delete_for_verification_tokens/
└─ migration.sql
└─ 20231206073509_add_multple_subscriptions/
└─ migration.sql
└─ 20231207134820_add_document_meta_dateformat_timezone/
└─ migration.sql
└─ 20231220124343_add_cascade_delete_user_apitoken/
└─ migration.sql
└─ 20231221101005_add_templates/
└─ migration.sql
└─ 20240115031508_add_password_to_document_meta/
└─ migration.sql
└─ 20240131004516_add_user_security_audit_logs/
└─ migration.sql
└─ 20240131132916_verify_paid_users/
└─ migration.sql
└─ 20240205040421_add_teams/
└─ migration.sql
└─ 20240205120648_create_delete_account/
└─ migration.sql
└─ 20240206051948_add_teams_templates/
└─ migration.sql
└─ 20240206111230_add_document_meta_redirect_url/
└─ migration.sql
└─ 20240206131417_add_user_webhooks/
└─ migration.sql
└─ 20240208135802_make_expiry_date_optional_api_tokens/
└─ migration.sql
└─ 20240209023519_add_document_audit_logs/
└─ migration.sql
└─ 20240220115435_add_public_profile_url_bio/
└─ migration.sql
└─ 20240221055920_support_team_tokens/
└─ migration.sql
└─ 20240222183156_display_banner/
└─ migration.sql
└─ 20240222183231_banner_show/
└─ migration.sql
└─ 20240222185936_remove_custom/
└─ migration.sql
└─ 20240222230527_change_banner_to_site_settings_model/
└─ migration.sql
└─ 20240222230604_add_site_banner_to_site_settings/
└─ migration.sql
└─ 20240224085633_extend_webhook_trigger_events/
└─ migration.sql
└─ 20240226035048_add_recipient_referential_action_for_fields/
└─ migration.sql
└─ 20240227003622_migrate_to_cuids_for_webhooks/
└─ migration.sql
└─ 20240227015420_add_webhook_call_table/
└─ migration.sql
└─ 20240227023747_add_team_webhooks/
└─ migration.sql
└─ 20240227031228_add_event_to_webhook_call_model/
└─ migration.sql
└─ 20240227111633_rework_user_profiles/
└─ migration.sql
└─ 20240306060259_add_passkeys/
└─ migration.sql
└─ 20240311113243_add_document_auth/
└─ migration.sql
└─ 20240327074701_add_secondary_verification_id/
└─ migration.sql
└─ 20240408083413_add_form_values_column/
└─ migration.sql
└─ 20240408142543_add_recipient_document_delete/
└─ migration.sql
└─ 20240418140819_remove_impossible_field_optional_states/
└─ migration.sql
└─ 20240424072655_update_foreign_key_constraints/
└─ migration.sql
Your database is now in sync with your schema.
✔ Generated Prisma Client (v5.4.2) to ./../../node_modules/@prisma/client in 433ms
> prisma:seed
> npm run with:env -- npm run prisma:seed -w @documenso/prisma
> with:env
> dotenv -e .env -e .env.local -- npm run prisma:seed -w @documenso/prisma
> @documenso/prisma@1.0.0 prisma:seed
> prisma db seed
Running seed command `ts-node --transpileOnly --project ./tsconfig.seed.json ./seed-database.ts` ...
[SEEDING]: initial-seed.ts
Database seeded
🌱 The seed command has been executed.
┌─────────────────────────────────────────────────────────┐
│ Update available 5.4.2 -> 5.14.0 │
│ Run the following to update │
│ npm i --save-dev prisma@latest │
│ npm i @prisma/client@latest │
└─────────────────────────────────────────────────────────┘
> dev
> turbo run dev --filter=@documenso/web --filter=@documenso/marketing
Turborepo did not find the correct binary for your platform.
We will attempt to install it now.
Installation has succeeded.
• Packages in scope: @documenso/marketing, @documenso/web
• Running dev in 2 packages
• Remote caching disabled
@documenso/marketing:dev: cache bypass, force executing 8e2b04584367b8ee
@documenso/web:dev: cache bypass, force executing 62825fff83b7cfc4
@documenso/marketing:dev:
@documenso/marketing:dev: > @documenso/marketing@1.2.3 dev
@documenso/marketing:dev: > next dev -p 3001
@documenso/marketing:dev:
@documenso/web:dev:
@documenso/web:dev: > @documenso/web@1.2.3 dev
@documenso/web:dev: > next dev -p 3000
@documenso/web:dev:
@documenso/web:dev: ▲ Next.js 14.0.3
@documenso/web:dev: - Local: http://localhost:3000
@documenso/web:dev: - Experiments (use at your own risk):
@documenso/web:dev: · outputFileTracingRoot
@documenso/web:dev:
@documenso/marketing:dev: ▲ Next.js 14.0.3
@documenso/marketing:dev: - Local: http://localhost:3001
@documenso/marketing:dev: - Experiments (use at your own risk):
@documenso/marketing:dev: · outputFileTracingRoot
@documenso/marketing:dev:
@documenso/web:dev: Attention: Next.js now collects completely anonymous telemetry regarding usage.
@documenso/web:dev: This information is used to shape Next.js' roadmap and prioritize features.
@documenso/web:dev: You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:
@documenso/web:dev: https://nextjs.org/telemetry
@documenso/web:dev:
@documenso/web:dev: ✓ Ready in 1868ms
@documenso/marketing:dev: Contentlayer config change detected. Updating type definitions and data...
@documenso/marketing:dev: ✓ Ready in 2.9s
@documenso/marketing:dev: ○ Compiling / ...
@documenso/marketing:dev: Generated 28 documents in .contentlayer
@documenso/marketing:dev: Browserslist: caniuse-lite is outdated. Please run:
@documenso/marketing:dev: npx update-browserslist-db@latest
@documenso/marketing:dev: Why you should do it regularly: https://github.com/browserslist/update-db#readme
@documenso/marketing:dev: ✓ Compiled / in 10.8s (2046 modules)
@documenso/web:dev: ○ Compiling /src/middleware ...
@documenso/web:dev: ✓ Compiled /src/middleware in 973ms (257 modules)
@documenso/web:dev: ○ Compiling /documents ...
@documenso/web:dev: Browserslist: caniuse-lite is outdated. Please run:
@documenso/web:dev: npx update-browserslist-db@latest
@documenso/web:dev: Why you should do it regularly: https://github.com/browserslist/update-db#readme
@documenso/web:dev: ✓ Compiled /documents in 17.7s (4376 modules)
@documenso/web:dev: *********************************************************************
@documenso/web:dev: *
@documenso/web:dev: *
@documenso/web:dev: Please change the encryption key from the default value of "CAFEBABE"
@documenso/web:dev: *
@documenso/web:dev: *
@documenso/web:dev: *********************************************************************
@documenso/web:dev: ○ Compiling /signin ...
@documenso/web:dev: ✓ Compiled /signin in 10.3s (4380 modules)
@documenso/web:dev: *********************************************************************
@documenso/web:dev: *
@documenso/web:dev: *
@documenso/web:dev: Please change the encryption key from the default value of "CAFEBABE"
@documenso/web:dev: *
@documenso/web:dev: *
@documenso/web:dev: *********************************************************************
```
2024-05-23 10:06:11 +07:00
Ephraim Duncan
3e634fd975
chore: update docker compose command ( #1159 )
2024-05-22 19:15:31 +07:00