From 532c150c99bec8eb5aa7508327db3c06b9babe13 Mon Sep 17 00:00:00 2001 From: Antje Worring Date: Sun, 21 Jun 2026 19:56:09 -0700 Subject: [PATCH] =?UTF-8?q?rename:=20@hanzo/sign-*=20=E2=86=92=20@hanzo/es?= =?UTF-8?q?ign-*=20(full=20eSign=20brand=20consistency)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The product is branded Hanzo eSign (esign.hanzo.ai, repo hanzoai/esign). Rename all workspace packages @hanzo/sign-* → @hanzo/esign-* (1052 files) and align docker/Dockerfile turbo --scope/--filter to the actual remix package name @hanzo/esign (was a pre-existing mismatch with -remix that broke the build). Protected deps (@hanzo/insights, @hanzo/logo) untouched. --- .../plans/pale-lemon-rock-pnpm-migration.md | 10 +- ...ooth-coral-earth-database-rate-limiting.md | 6 +- .eslintrc.cjs | 2 +- .opencode/commands/continue.md | 12 +- .opencode/commands/document.md | 6 +- .opencode/commands/implement.md | 10 +- .../skills/envelope-editor-v2-e2e/SKILL.md | 12 +- ARCHITECTURE.md | 34 ++--- CODE_STYLE.md | 14 +- README.md | 4 +- .../docs/developers/embedding/authoring.mdx | 10 +- .../docs/developers/embedding/index.mdx | 18 +-- .../developers/embedding/sdks/angular.mdx | 10 +- .../docs/developers/embedding/sdks/index.mdx | 12 +- .../docs/developers/embedding/sdks/preact.mdx | 12 +- .../docs/developers/embedding/sdks/react.mdx | 14 +- .../docs/developers/embedding/sdks/solid.mdx | 12 +- .../docs/developers/embedding/sdks/svelte.mdx | 12 +- .../docs/developers/embedding/sdks/vue.mdx | 12 +- .../getting-started/authentication.mdx | 2 +- .../developers/local-development/index.mdx | 2 +- .../developers/local-development/manual.mdx | 2 +- apps/docs/package.json | 2 +- apps/openpage-api/README.md | 2 +- .../growth/get-monthly-completed-document.ts | 2 +- .../lib/growth/get-signer-conversion.ts | 2 +- .../lib/growth/get-user-monthly-growth.ts | 2 +- apps/openpage-api/package.json | 4 +- apps/remix/app/app.css | 2 +- .../app/components/branding/hanzo-mark.tsx | 2 +- .../dialogs/account-delete-dialog.tsx | 18 +-- .../dialogs/admin-document-delete-dialog.tsx | 14 +- .../admin-organisation-create-dialog.tsx | 20 +-- ...dmin-organisation-member-update-dialog.tsx | 18 +-- .../admin-swap-subscription-dialog.tsx | 18 +-- .../dialogs/admin-user-delete-dialog.tsx | 18 +-- .../dialogs/admin-user-disable-dialog.tsx | 18 +-- .../dialogs/admin-user-enable-dialog.tsx | 18 +-- .../admin-user-reset-two-factor-dialog.tsx | 18 +-- .../dialogs/ai-features-enable-dialog.tsx | 10 +- .../dialogs/ai-field-detection-dialog.tsx | 12 +- .../dialogs/ai-recipient-detection-dialog.tsx | 12 +- .../dialogs/assistant-confirmation-dialog.tsx | 8 +- .../dialogs/claim-create-dialog.tsx | 14 +- .../dialogs/claim-delete-dialog.tsx | 12 +- .../dialogs/claim-update-dialog.tsx | 14 +- .../dialogs/document-delete-dialog.tsx | 16 +-- .../dialogs/document-duplicate-dialog.tsx | 12 +- .../document-move-to-folder-dialog.tsx | 20 +-- .../dialogs/document-resend-dialog.tsx | 26 ++-- .../dialogs/envelope-delete-dialog.tsx | 16 +-- .../dialogs/envelope-distribute-dialog.tsx | 42 +++--- .../dialogs/envelope-download-dialog.tsx | 12 +- .../dialogs/envelope-duplicate-dialog.tsx | 12 +- .../dialogs/envelope-item-delete-dialog.tsx | 12 +- .../dialogs/envelope-redistribute-dialog.tsx | 22 +-- .../dialogs/envelopes-bulk-delete-dialog.tsx | 12 +- .../dialogs/envelopes-bulk-move-dialog.tsx | 18 +-- .../dialogs/folder-create-dialog.tsx | 12 +- .../dialogs/folder-delete-dialog.tsx | 18 +-- .../components/dialogs/folder-move-dialog.tsx | 16 +-- .../dialogs/folder-update-dialog.tsx | 20 +-- .../dialogs/organisation-create-dialog.tsx | 20 +-- .../dialogs/organisation-delete-dialog.tsx | 18 +-- .../organisation-email-create-dialog.tsx | 16 +-- .../organisation-email-delete-dialog.tsx | 12 +- ...rganisation-email-domain-create-dialog.tsx | 18 +-- ...rganisation-email-domain-delete-dialog.tsx | 14 +- ...ganisation-email-domain-records-dialog.tsx | 14 +- .../organisation-email-update-dialog.tsx | 16 +-- .../organisation-group-create-dialog.tsx | 28 ++-- .../organisation-group-delete-dialog.tsx | 12 +- .../dialogs/organisation-leave-dialog.tsx | 16 +-- .../organisation-member-delete-dialog.tsx | 14 +- .../organisation-member-invite-dialog.tsx | 40 +++--- .../organisation-member-update-dialog.tsx | 20 +-- .../dialogs/passkey-create-dialog.tsx | 22 +-- .../public-profile-template-manage-dialog.tsx | 22 +-- .../dialogs/session-logout-all-dialog.tsx | 8 +- .../dialogs/sign-field-checkbox-dialog.tsx | 14 +- .../dialogs/sign-field-dropdown-dialog.tsx | 4 +- .../dialogs/sign-field-email-dialog.tsx | 8 +- .../dialogs/sign-field-initials-dialog.tsx | 8 +- .../dialogs/sign-field-name-dialog.tsx | 8 +- .../dialogs/sign-field-number-dialog.tsx | 14 +- .../dialogs/sign-field-signature-dialog.tsx | 6 +- .../dialogs/sign-field-text-dialog.tsx | 12 +- .../components/dialogs/team-create-dialog.tsx | 32 ++--- .../components/dialogs/team-delete-dialog.tsx | 24 ++-- .../dialogs/team-email-add-dialog.tsx | 16 +-- .../dialogs/team-email-delete-dialog.tsx | 18 +-- .../dialogs/team-email-update-dialog.tsx | 14 +- .../dialogs/team-group-create-dialog.tsx | 26 ++-- .../dialogs/team-group-delete-dialog.tsx | 14 +- .../dialogs/team-group-update-dialog.tsx | 22 +-- .../team-inherit-member-disable-dialog.tsx | 10 +- .../team-inherit-member-enable-dialog.tsx | 14 +- .../dialogs/team-member-create-dialog.tsx | 30 ++-- .../dialogs/team-member-delete-dialog.tsx | 14 +- .../dialogs/team-member-update-dialog.tsx | 20 +-- .../dialogs/template-bulk-send-dialog.tsx | 14 +- .../dialogs/template-delete-dialog.tsx | 10 +- .../dialogs/template-direct-link-dialog.tsx | 38 +++--- .../dialogs/template-duplicate-dialog.tsx | 10 +- .../template-move-to-folder-dialog.tsx | 22 +-- .../dialogs/template-use-dialog.tsx | 38 +++--- .../dialogs/token-delete-dialog.tsx | 12 +- .../dialogs/webhook-create-dialog.tsx | 18 +-- .../dialogs/webhook-delete-dialog.tsx | 14 +- .../dialogs/webhook-edit-dialog.tsx | 18 +-- .../dialogs/webhook-test-dialog.tsx | 16 +-- .../configure-document-advanced-settings.tsx | 28 ++-- .../configure-document-recipients.tsx | 14 +- .../authoring/configure-document-upload.tsx | 10 +- .../authoring/configure-document-view.tsx | 12 +- .../configure-document-view.types.ts | 8 +- .../embed/authoring/configure-fields-view.tsx | 36 ++--- .../authoring/configure-fields-view.types.ts | 4 +- .../field-advanced-settings-drawer.tsx | 10 +- .../embed/embed-authentication-required.tsx | 2 +- .../embed-direct-template-client-page.tsx | 40 +++--- .../embed/embed-document-completed.tsx | 4 +- .../embed/embed-document-fields.tsx | 14 +- .../embed/embed-document-signing-page-v1.tsx | 38 +++--- .../embed/embed-document-signing-page-v2.tsx | 4 +- .../multisign/multi-sign-document-list.tsx | 12 +- .../multi-sign-document-signing-view.tsx | 34 ++--- .../components/filters/date-range-filter.tsx | 6 +- .../2fa/disable-authenticator-app-dialog.tsx | 16 +-- .../2fa/enable-authenticator-app-dialog.tsx | 16 +-- .../forms/2fa/recovery-code-list.tsx | 4 +- .../forms/2fa/view-recovery-codes-dialog.tsx | 16 +-- .../app/components/forms/avatar-image.tsx | 24 ++-- .../forms/branding-preferences-form.tsx | 16 +-- .../forms/document-preferences-form.tsx | 46 +++---- .../editor/editor-field-checkbox-form.tsx | 18 +-- .../forms/editor/editor-field-date-form.tsx | 4 +- .../editor/editor-field-dropdown-form.tsx | 10 +- .../forms/editor/editor-field-email-form.tsx | 4 +- .../editor-field-generic-field-forms.tsx | 18 +-- .../editor/editor-field-initials-form.tsx | 4 +- .../forms/editor/editor-field-name-form.tsx | 4 +- .../forms/editor/editor-field-number-form.tsx | 12 +- .../forms/editor/editor-field-radio-form.tsx | 12 +- .../editor/editor-field-signature-form.tsx | 6 +- .../forms/editor/editor-field-text-form.tsx | 8 +- .../forms/email-preferences-form.tsx | 20 +-- .../app/components/forms/forgot-password.tsx | 12 +- .../forms/organisation-update-form.tsx | 20 +-- apps/remix/app/components/forms/password.tsx | 18 +-- apps/remix/app/components/forms/profile.tsx | 20 +-- .../components/forms/public-profile-form.tsx | 24 ++-- .../app/components/forms/reset-password.tsx | 16 +-- .../forms/search-param-selector.tsx | 2 +- .../forms/send-confirmation-email.tsx | 12 +- apps/remix/app/components/forms/signin.tsx | 10 +- apps/remix/app/components/forms/signup.tsx | 24 ++-- .../forms/subscription-claim-form.tsx | 14 +- .../components/forms/support-ticket-form.tsx | 14 +- .../app/components/forms/team-update-form.tsx | 16 +-- apps/remix/app/components/forms/token.tsx | 24 ++-- .../components/general/admin-license-card.tsx | 16 +-- .../general/admin-license-status-banner.tsx | 6 +- .../admin-monthly-active-user-charts.tsx | 2 +- .../admin-stats-signer-conversion-chart.tsx | 2 +- .../admin-stats-users-with-documents.tsx | 2 +- .../general/animated-document-scanner.tsx | 2 +- .../app/components/general/app-banner.tsx | 2 +- .../components/general/app-command-menu.tsx | 24 ++-- .../app/components/general/app-header.tsx | 14 +- .../components/general/app-nav-desktop.tsx | 8 +- .../app/components/general/app-nav-mobile.tsx | 16 +-- .../general/avatar-with-recipient.tsx | 14 +- .../app/components/general/claim-account.tsx | 18 +-- ...efault-recipients-multiselect-combobox.tsx | 14 +- .../direct-template-configure-form.tsx | 16 +-- .../direct-template/direct-template-page.tsx | 20 +-- .../direct-template-signing-auth-page.tsx | 6 +- .../direct-template-signing-form.tsx | 34 ++--- .../document-signing/access-auth-2fa-form.tsx | 18 +-- .../document-signing-attachments-popover.tsx | 8 +- .../document-signing-auth-2fa.tsx | 14 +- .../document-signing-auth-account.tsx | 10 +- .../document-signing-auth-dialog.tsx | 6 +- .../document-signing-auth-page.tsx | 6 +- .../document-signing-auth-passkey.tsx | 18 +-- .../document-signing-auth-password.tsx | 14 +- .../document-signing-auth-provider.tsx | 14 +- .../document-signing-auto-sign.tsx | 22 +-- .../document-signing-checkbox-field.tsx | 28 ++-- .../document-signing-complete-dialog.tsx | 14 +- .../document-signing-date-field.tsx | 22 +-- .../document-signing-disclosure.tsx | 2 +- .../document-signing-dropdown-field.tsx | 20 +-- .../document-signing-email-field.tsx | 16 +-- .../document-signing-field-container.tsx | 14 +- .../document-signing-fields.tsx | 2 +- .../document-signing-form.tsx | 26 ++-- .../document-signing-initials-field.tsx | 18 +-- .../document-signing-mobile-widget.tsx | 2 +- .../document-signing-name-field.tsx | 24 ++-- .../document-signing-number-field.tsx | 26 ++-- .../document-signing-page-view-v1.tsx | 38 +++--- .../document-signing-page-view-v2.tsx | 10 +- .../document-signing-provider.tsx | 2 +- .../document-signing-radio-field.tsx | 20 +-- .../document-signing-recipient-provider.tsx | 2 +- .../document-signing-reject-dialog.tsx | 14 +- .../document-signing-signature-field.tsx | 20 +-- .../document-signing-text-field.tsx | 26 ++-- .../envelope-signing-provider.tsx | 16 +-- .../document/document-attachments-popover.tsx | 24 ++-- .../document-audit-log-download-button.tsx | 14 +- .../document-certificate-download-button.tsx | 16 +-- .../document/document-certificate-qr-view.tsx | 16 +-- .../general/document/document-edit-form.tsx | 52 +++---- .../document/document-page-view-button.tsx | 10 +- .../document/document-page-view-dropdown.tsx | 16 +-- .../document-page-view-information.tsx | 6 +- .../document-page-view-recent-activity.tsx | 12 +- .../document-page-view-recipients.tsx | 22 +-- .../document-recipient-link-copy-dialog.tsx | 20 +-- .../general/document/document-search.tsx | 4 +- .../general/document/document-status.tsx | 6 +- .../document-upload-button-legacy.tsx | 30 ++-- .../embedded-editor-attachment-popover.tsx | 16 +-- .../envelope-editor-fields-drag-drop.tsx | 22 +-- .../envelope-editor-fields-page-renderer.tsx | 20 +-- .../envelope-editor-fields-page.tsx | 20 +-- .../envelope-editor-header.tsx | 10 +- .../envelope-editor-preview-page.tsx | 22 +-- .../envelope-editor-recipient-form.tsx | 50 +++---- ...elope-editor-renderer-provider-wrapper.tsx | 4 +- .../envelope-editor-settings-dialog.tsx | 72 +++++----- .../envelope-editor-title-input.tsx | 4 +- .../envelope-editor-upload-page.tsx | 32 ++--- .../envelope-editor/envelope-editor.tsx | 14 +- .../envelope-file-selector.tsx | 4 +- .../envelope-generic-page-renderer.tsx | 12 +- .../envelope-recipient-selector.tsx | 16 +-- .../envelope-signing/envelope-signer-form.tsx | 10 +- .../envelope-signer-header.tsx | 10 +- .../envelope-signer-page-renderer.tsx | 36 ++--- .../envelope-signing-complete-dialog.tsx | 20 +-- .../envelope/envelope-drop-zone-wrapper.tsx | 26 ++-- .../envelope/envelope-upload-button.tsx | 26 ++-- .../components/general/folder/folder-card.tsx | 12 +- .../components/general/folder/folder-grid.tsx | 10 +- .../general/generic-error-layout.tsx | 4 +- .../general/legacy-field-warning-popover.tsx | 8 +- .../app/components/general/menu-switcher.tsx | 20 +-- .../app/components/general/metric-card.tsx | 2 +- .../general/multiselect-role-combobox.tsx | 8 +- .../components/general/org-menu-switcher.tsx | 32 ++--- .../organisation-invitations.tsx | 24 ++-- .../pdf-viewer/envelope-pdf-viewer.tsx | 8 +- .../pdf-viewer/pdf-viewer-page-image.tsx | 6 +- .../general/pdf-viewer/pdf-viewer-states.tsx | 2 +- .../general/pdf-viewer/pdf-viewer.tsx | 8 +- .../components/general/period-selector.tsx | 4 +- .../components/general/settings-header.tsx | 2 +- .../general/settings-nav-desktop.tsx | 10 +- .../general/settings-nav-mobile.tsx | 10 +- .../skeletons/document-edit-skeleton.tsx | 2 +- .../app/components/general/stack-avatar.tsx | 4 +- .../general/stack-avatars-with-tooltip.tsx | 8 +- .../app/components/general/stack-avatars.tsx | 4 +- .../general/teams/team-email-dropdown.tsx | 8 +- .../general/teams/team-email-usage.tsx | 10 +- .../teams/team-inherit-member-alert.tsx | 2 +- .../template/template-direct-link-badge.tsx | 8 +- .../general/template/template-edit-form.tsx | 44 +++--- .../template-page-view-documents-table.tsx | 22 +-- .../template-page-view-information.tsx | 4 +- .../template-page-view-recent-activity.tsx | 8 +- .../template-page-view-recipients.tsx | 8 +- .../general/template/template-type.tsx | 2 +- .../general/user-profile-skeleton.tsx | 8 +- .../components/general/user-profile-timur.tsx | 10 +- .../general/verify-email-banner.tsx | 10 +- .../components/general/webhook-logs-sheet.tsx | 18 +-- .../general/webhook-multiselect-combobox.tsx | 4 +- .../components/tables/admin-claims-table.tsx | 28 ++-- .../tables/admin-dashboard-users-table.tsx | 14 +- .../tables/admin-document-jobs-table.tsx | 20 +-- .../tables/admin-document-logs-table.tsx | 30 ++-- .../admin-document-recipient-item-table.tsx | 14 +- .../admin-organisation-overview-table.tsx | 14 +- .../tables/admin-organisations-table.tsx | 24 ++-- .../tables/admin-user-teams-table.tsx | 26 ++-- .../components/tables/document-logs-table.tsx | 20 +-- .../tables/documents-table-action-button.tsx | 10 +- .../documents-table-action-dropdown.tsx | 12 +- .../tables/documents-table-empty-state.tsx | 2 +- .../tables/documents-table-sender-filter.tsx | 8 +- .../tables/documents-table-title.tsx | 6 +- .../app/components/tables/documents-table.tsx | 22 +-- .../envelopes-table-bulk-action-bar.tsx | 2 +- .../app/components/tables/inbox-table.tsx | 24 ++-- .../tables/internal-audit-log-table.tsx | 10 +- .../organisation-email-domains-table.tsx | 30 ++-- .../tables/organisation-groups-table.tsx | 24 ++-- .../tables/organisation-insights-table.tsx | 16 +-- .../organisation-member-invites-table.tsx | 28 ++-- .../tables/organisation-members-table.tsx | 30 ++-- .../tables/organisation-teams-table.tsx | 28 ++-- ...ettings-public-profile-templates-table.tsx | 14 +- .../settings-security-activity-table.tsx | 20 +-- ...ettings-security-passkey-table-actions.tsx | 14 +- .../settings-security-passkey-table.tsx | 18 +-- .../components/tables/team-groups-table.tsx | 22 +-- .../components/tables/team-members-table.tsx | 34 ++--- .../templates-table-action-dropdown.tsx | 4 +- .../app/components/tables/templates-table.tsx | 26 ++-- .../tables/user-organisations-table.tsx | 26 ++-- apps/remix/app/entry.client.tsx | 4 +- apps/remix/app/entry.server.tsx | 4 +- apps/remix/app/providers/team.tsx | 2 +- apps/remix/app/root.tsx | 18 +-- .../app/routes/_authenticated+/_layout.tsx | 14 +- .../routes/_authenticated+/admin+/_layout.tsx | 10 +- .../routes/_authenticated+/admin+/claims.tsx | 6 +- .../_authenticated+/admin+/documents.$id.tsx | 18 +-- .../admin+/documents._index.tsx | 22 +-- .../admin+/email-domains.$id.tsx | 20 +-- .../admin+/email-domains._index.tsx | 22 +-- .../admin+/organisation-insights.$id.tsx | 8 +- .../admin+/organisation-insights._index.tsx | 4 +- .../admin+/organisations.$id.tsx | 34 ++--- .../admin+/organisations._index.tsx | 4 +- .../_authenticated+/admin+/site-settings.tsx | 20 +-- .../routes/_authenticated+/admin+/stats.tsx | 10 +- .../admin+/unsealed-documents._index.tsx | 20 +-- .../_authenticated+/admin+/users.$id.tsx | 20 +-- .../_authenticated+/admin+/users._index.tsx | 2 +- .../app/routes/_authenticated+/dashboard.tsx | 20 +-- .../_authenticated+/o.$orgUrl._index.tsx | 20 +-- .../_authenticated+/o.$orgUrl._layout.tsx | 2 +- .../o.$orgUrl.settings._layout.tsx | 8 +- .../o.$orgUrl.settings.branding.tsx | 16 +-- .../o.$orgUrl.settings.document.tsx | 18 +-- .../o.$orgUrl.settings.email-domains.$id.tsx | 18 +-- .../o.$orgUrl.settings.email.tsx | 12 +- .../o.$orgUrl.settings.general.tsx | 6 +- .../o.$orgUrl.settings.groups.$id.tsx | 32 ++--- .../o.$orgUrl.settings.members.tsx | 6 +- .../o.$orgUrl.settings.sso.tsx | 40 +++--- .../o.$orgUrl.settings.teams.tsx | 4 +- .../_authenticated+/o.$orgUrl.support.tsx | 6 +- .../_dynamic_personal_routes+/_layout.tsx | 8 +- .../_authenticated+/settings+/profile.tsx | 8 +- .../settings+/security._index.tsx | 10 +- .../settings+/security.linked-accounts.tsx | 16 +-- .../settings+/security.sessions.tsx | 18 +-- .../_authenticated+/t.$teamUrl+/_index.tsx | 2 +- .../_authenticated+/t.$teamUrl+/_layout.tsx | 10 +- .../t.$teamUrl+/documents.$id._index.tsx | 30 ++-- .../t.$teamUrl+/documents.$id._layout.tsx | 10 +- .../t.$teamUrl+/documents.$id.edit.tsx | 14 +- .../documents.$id.legacy_editor.tsx | 12 +- .../t.$teamUrl+/documents.$id.logs.tsx | 14 +- .../t.$teamUrl+/documents._index.tsx | 26 ++-- .../t.$teamUrl+/documents.folders._index.tsx | 12 +- .../t.$teamUrl+/settings._index.tsx | 14 +- .../t.$teamUrl+/settings._layout.tsx | 10 +- .../t.$teamUrl+/settings.branding.tsx | 8 +- .../t.$teamUrl+/settings.document.tsx | 10 +- .../t.$teamUrl+/settings.email.tsx | 8 +- .../t.$teamUrl+/settings.groups.tsx | 10 +- .../t.$teamUrl+/settings.members.tsx | 4 +- .../t.$teamUrl+/settings.public-profile.tsx | 22 +-- .../t.$teamUrl+/settings.tokens.tsx | 10 +- .../settings.webhooks.$id._index.tsx | 38 +++--- .../t.$teamUrl+/settings.webhooks._index.tsx | 20 +-- .../t.$teamUrl+/templates.$id._index.tsx | 26 ++-- .../t.$teamUrl+/templates.$id._layout.tsx | 10 +- .../templates.$id.legacy_editor.tsx | 8 +- .../t.$teamUrl+/templates._index.tsx | 16 +-- .../t.$teamUrl+/templates.folders._index.tsx | 12 +- apps/remix/app/routes/_index.tsx | 10 +- .../_internal+/[__htmltopdf]+/audit-log.tsx | 20 +-- .../_internal+/[__htmltopdf]+/certificate.tsx | 26 ++-- apps/remix/app/routes/_profile+/_layout.tsx | 8 +- apps/remix/app/routes/_profile+/p.$url.tsx | 18 +-- apps/remix/app/routes/_recipient+/_layout.tsx | 6 +- .../routes/_recipient+/d.$token+/_index.tsx | 18 +-- .../_recipient+/sign.$token+/_index.tsx | 46 +++---- .../_recipient+/sign.$token+/complete.tsx | 36 ++--- .../_recipient+/sign.$token+/expired.tsx | 14 +- .../_recipient+/sign.$token+/rejected.tsx | 16 +-- .../_recipient+/sign.$token+/waiting.tsx | 14 +- .../routes/_share+/share.$slug.opengraph.tsx | 6 +- apps/remix/app/routes/_share+/share.$slug.tsx | 4 +- .../articles.signature-disclosure.tsx | 4 +- .../routes/_unauthenticated+/check-email.tsx | 2 +- .../_unauthenticated+/o.$orgUrl.signin.tsx | 14 +- .../organisation.decline.$token.tsx | 4 +- .../organisation.invite.$token.tsx | 8 +- .../organisation.sso.confirmation.$token.tsx | 34 ++--- .../reset-password.$token.tsx | 2 +- .../reset-password._index.tsx | 2 +- .../app/routes/_unauthenticated+/signin.tsx | 6 +- .../app/routes/_unauthenticated+/signup.tsx | 4 +- .../team.verify.email.$token.tsx | 6 +- .../_unauthenticated+/verify-email.$token.tsx | 10 +- .../_unauthenticated+/verify-email._index.tsx | 2 +- apps/remix/app/routes/api+/avatar.$id.tsx | 2 +- .../api+/branding.logo.organisation.$orgId.ts | 6 +- .../routes/api+/branding.logo.team.$teamId.ts | 6 +- .../app/routes/api+/certificate-status.ts | 2 +- apps/remix/app/routes/api+/health.ts | 4 +- apps/remix/app/routes/api+/limits.tsx | 2 +- apps/remix/app/routes/api+/locale.tsx | 2 +- apps/remix/app/routes/api+/webhook.trigger.ts | 2 +- .../app/routes/embed+/_v0+/direct.$token.tsx | 22 +-- .../app/routes/embed+/_v0+/sign.$token.tsx | 38 +++--- .../routes/embed+/v1+/authoring+/_layout.tsx | 8 +- .../embed+/v1+/authoring+/document.create.tsx | 14 +- .../v1+/authoring+/document.edit.$id.tsx | 26 ++-- .../embed+/v1+/authoring+/template.create.tsx | 12 +- .../v1+/authoring+/template.edit.$id.tsx | 26 ++-- .../routes/embed+/v1+/multisign+/_index.tsx | 10 +- .../routes/embed+/v2+/authoring+/_layout.tsx | 18 +-- .../v2+/authoring+/envelope.create._index.tsx | 36 ++--- .../v2+/authoring+/envelope.edit.$id.tsx | 30 ++-- apps/remix/app/storage/lang-cookie.server.ts | 2 +- .../remix/app/storage/theme-session.server.ts | 2 +- apps/remix/app/utils/css-vars.ts | 2 +- .../app/utils/field-signing/checkbox-field.ts | 12 +- .../app/utils/field-signing/dropdown-field.ts | 6 +- .../app/utils/field-signing/email-field.ts | 6 +- .../app/utils/field-signing/initial-field.ts | 6 +- .../app/utils/field-signing/name-field.ts | 6 +- .../app/utils/field-signing/number-field.ts | 6 +- .../utils/field-signing/signature-field.ts | 6 +- .../app/utils/field-signing/text-field.ts | 6 +- apps/remix/app/utils/get-asset-buffer.ts | 2 +- apps/remix/app/utils/meta.ts | 4 +- apps/remix/package.json | 18 +-- apps/remix/rollup.config.mjs | 10 +- apps/remix/server/api/ai/detect-fields.ts | 10 +- .../server/api/ai/detect-fields.types.ts | 2 +- .../server/api/ai/detect-recipients.client.ts | 2 +- apps/remix/server/api/ai/detect-recipients.ts | 10 +- .../server/api/ai/detect-recipients.types.ts | 2 +- apps/remix/server/api/download/download.ts | 10 +- apps/remix/server/api/files/files.helpers.ts | 4 +- apps/remix/server/api/files/files.ts | 16 +-- apps/remix/server/api/files/files.types.ts | 2 +- .../routes/get-envelope-item-pdf-by-token.ts | 2 +- .../api/files/routes/get-envelope-item-pdf.ts | 12 +- apps/remix/server/context.ts | 4 +- apps/remix/server/main.js | 4 +- apps/remix/server/middleware.ts | 2 +- apps/remix/server/router.ts | 24 ++-- apps/remix/server/zap/http-api.ts | 14 +- apps/remix/tailwind.config.ts | 16 +-- apps/remix/tsconfig.json | 16 +-- apps/remix/vite.config.ts | 2 +- docker/Dockerfile | 4 +- lingui.config.ts | 2 +- package-lock.json | 128 +++++++++--------- package.json | 30 ++-- packages/api/hono.ts | 16 +-- packages/api/package.json | 6 +- packages/api/tsconfig.json | 2 +- packages/api/v1/contract.ts | 2 +- packages/api/v1/implementation.ts | 70 +++++----- packages/api/v1/middleware/authenticated.ts | 14 +- packages/api/v1/openapi.ts | 4 +- packages/api/v1/schema.ts | 16 +-- .../constants/field-alignment-pdf.ts | 4 +- .../app-tests/constants/field-meta-pdf.ts | 4 +- .../update-organisation-member-role.spec.ts | 6 +- .../e2e/api/v1/document-sending.spec.ts | 14 +- .../e2e/api/v1/template-field-prefill.spec.ts | 16 +-- .../v1/test-unauthorized-api-access.spec.ts | 16 +-- .../e2e/api/v2/distribute-validation.spec.ts | 14 +- .../e2e/api/v2/embedding-presign.spec.ts | 10 +- .../e2e/api/v2/envelopes-api.spec.ts | 28 ++-- .../e2e/api/v2/find-documents.spec.ts | 16 +-- .../e2e/api/v2/find-envelopes.spec.ts | 16 +-- .../e2e/api/v2/placeholder-fields-api.spec.ts | 16 +-- .../e2e/api/v2/template-field-prefill.spec.ts | 16 +-- .../v2/test-unauthorized-api-access.spec.ts | 28 ++-- .../api-access-envelope-attachments.spec.ts | 10 +- .../api-access-envelope-bulk.spec.ts | 12 +- .../auto-place-fields-document.spec.ts | 6 +- .../e2e/command-menu/document-search.spec.ts | 4 +- .../e2e/document-auth/access-auth.spec.ts | 8 +- .../e2e/document-auth/action-auth.spec.ts | 8 +- .../next-recipient-dictation.spec.ts | 6 +- .../autosave-fields-step.spec.ts | 8 +- .../autosave-settings-step.spec.ts | 6 +- .../autosave-signers-step.spec.ts | 10 +- .../autosave-subject-step.spec.ts | 8 +- .../duplicate-recipients-simple.spec.ts | 6 +- .../duplicate-recipients.spec.ts | 8 +- .../e2e/document-flow/settings-step.spec.ts | 4 +- .../e2e/document-flow/signers-step.spec.ts | 4 +- .../document-flow/stepper-component.spec.ts | 8 +- .../documents/bulk-document-actions.spec.ts | 8 +- .../e2e/documents/delete-documents.spec.ts | 4 +- .../e2e/documents/find-documents.spec.ts | 12 +- .../test-unauthorized-document-access.spec.ts | 6 +- .../envelope-actions.spec.ts | 18 +-- .../envelope-attachments.spec.ts | 4 +- .../envelope-editor-embedded-css.spec.ts | 2 +- .../envelope-fields.spec.ts | 4 +- .../envelope-editor-v2/envelope-items.spec.ts | 4 +- .../envelope-recipients.spec.ts | 4 +- .../envelope-settings.spec.ts | 4 +- .../envelopes/cert-page-dimensions.spec.ts | 6 +- .../e2e/envelopes/envelope-alignment.spec.ts | 8 +- .../envelope-expiration-send.spec.ts | 16 +-- .../envelope-expiration-settings.spec.ts | 6 +- .../envelope-expiration-signing.spec.ts | 8 +- .../include-document-certificate.spec.ts | 12 +- .../app-tests/e2e/fixtures/authentication.ts | 2 +- .../app-tests/e2e/fixtures/envelope-editor.ts | 12 +- .../e2e/folders/team-account-folders.spec.ts | 12 +- .../enterprise-feature-restrictions.spec.ts | 4 +- .../e2e/license/license-status-banner.spec.ts | 4 +- .../organisations/manage-organisation.spec.ts | 8 +- .../organisation-team-preferences.spec.ts | 10 +- .../e2e/pdf-viewer/pdf-viewer.spec.ts | 20 +-- .../public-profiles/public-profiles.spec.ts | 8 +- .../e2e/scenarios/form-flattening.spec.ts | 16 +-- .../e2e/teams/default-recipients.spec.ts | 14 +- .../app-tests/e2e/teams/manage-team.spec.ts | 4 +- .../e2e/teams/search-documents.spec.ts | 12 +- .../e2e/teams/team-documents.spec.ts | 6 +- .../app-tests/e2e/teams/team-email.spec.ts | 6 +- .../e2e/teams/team-signature-settings.spec.ts | 8 +- .../duplicate-recipients.spec.ts | 8 +- .../template-autosave-fields-step.spec.ts | 10 +- .../template-autosave-settings-step.spec.ts | 8 +- .../template-autosave-signers-step.spec.ts | 12 +- .../template-settings-step.spec.ts | 8 +- .../template-signers-step.spec.ts | 4 +- .../templates/bulk-template-actions.spec.ts | 10 +- .../create-document-from-template.spec.ts | 10 +- .../e2e/templates/direct-templates.spec.ts | 16 +-- .../e2e/templates/manage-templates.spec.ts | 4 +- .../test-unauthorized-template-access.spec.ts | 6 +- packages/app-tests/e2e/user/auth-flow.spec.ts | 4 +- .../app-tests/e2e/user/auth-sessions.spec.ts | 2 +- .../app-tests/e2e/user/delete-account.spec.ts | 6 +- packages/app-tests/e2e/user/password.spec.ts | 4 +- .../app-tests/e2e/user/update-name.spec.ts | 4 +- .../e2e/webhooks/webhooks-crud.spec.ts | 10 +- packages/app-tests/package.json | 8 +- packages/app-tests/tsconfig.json | 4 +- packages/assets/package.json | 2 +- packages/auth/client/index.ts | 4 +- packages/auth/package.json | 6 +- packages/auth/server/config.ts | 4 +- packages/auth/server/index.ts | 6 +- .../server/lib/session/session-cookies.ts | 6 +- packages/auth/server/lib/session/session.ts | 6 +- .../lib/utils/delete-account-provider.ts | 4 +- .../auth/server/lib/utils/get-accounts.ts | 2 +- packages/auth/server/lib/utils/get-session.ts | 4 +- .../lib/utils/handle-oauth-authorize-url.ts | 2 +- .../lib/utils/handle-oauth-callback-url.ts | 12 +- .../handle-oauth-organisation-callback-url.ts | 10 +- .../server/lib/utils/organisation-portal.ts | 10 +- packages/auth/server/lib/utils/redirect.ts | 2 +- packages/auth/server/routes/callback.ts | 2 +- packages/auth/server/routes/email-password.ts | 44 +++--- packages/auth/server/routes/passkey.ts | 18 +-- packages/auth/server/routes/sign-out.ts | 2 +- packages/auth/server/routes/two-factor.ts | 12 +- packages/auth/server/types/context.ts | 2 +- packages/auth/tsconfig.json | 2 +- packages/email/mailer.ts | 2 +- packages/email/package.json | 6 +- packages/email/render.tsx | 2 +- packages/email/tailwind.config.js | 2 +- .../template-document-invite.tsx | 2 +- .../template-document-self-signed.tsx | 2 +- .../template-reset-password.tsx | 2 +- .../email/templates/confirm-team-email.tsx | 2 +- .../document-created-from-direct-template.tsx | 2 +- packages/email/templates/document-invite.tsx | 2 +- packages/email/templates/team-delete.tsx | 2 +- .../email/templates/team-email-removed.tsx | 2 +- packages/email/transports/mailchannels.ts | 2 +- packages/email/tsconfig.json | 4 +- packages/eslint-config/package.json | 2 +- packages/eslint-config/tsconfig.json | 2 +- .../validate-checkbox.ts | 2 +- .../validate-number.ts | 2 +- .../lib/client-only/hooks/use-analytics.ts | 2 +- .../client-only/hooks/use-copy-share-link.ts | 4 +- .../client-only/hooks/use-document-element.ts | 2 +- .../client-only/hooks/use-editor-fields.ts | 8 +- .../hooks/use-editor-recipients.ts | 6 +- .../client-only/hooks/use-element-bounds.ts | 2 +- .../hooks/use-field-page-coords.ts | 4 +- .../client-only/hooks/use-is-page-in-dom.ts | 2 +- .../providers/envelope-editor-provider.tsx | 20 +-- .../providers/envelope-render-provider.tsx | 8 +- .../client-only/providers/organisation.tsx | 2 +- .../lib/client-only/providers/session.tsx | 8 +- packages/lib/constants/app.ts | 2 +- packages/lib/constants/document-visibility.ts | 2 +- packages/lib/constants/document.ts | 2 +- packages/lib/constants/feature-flags.ts | 2 +- packages/lib/jobs/client/local.ts | 2 +- .../send-document-cancelled-emails.handler.ts | 8 +- ...rganisation-member-joined-email.handler.ts | 6 +- ...-organisation-member-left-email.handler.ts | 6 +- ...d-owner-recipient-expired-email.handler.ts | 6 +- .../send-recipient-signed-email.handler.ts | 6 +- .../emails/send-rejection-emails.handler.ts | 10 +- .../emails/send-signing-email.handler.ts | 8 +- .../backport-subscription-claims.handler.ts | 2 +- .../internal/bulk-send-template.handler.ts | 12 +- .../internal/cleanup-rate-limits.handler.ts | 2 +- .../internal/execute-webhook.handler.ts | 2 +- .../expire-recipients-sweep.handler.ts | 2 +- .../process-recipient-expired.handler.ts | 2 +- .../internal/seal-document-sweep.handler.ts | 2 +- .../internal/seal-document.handler.ts | 12 +- .../internal/sync-email-domains.handler.ts | 6 +- packages/lib/package.json | 10 +- packages/lib/plain/client.ts | 2 +- packages/lib/server-only/2fa/disable-2fa.ts | 2 +- .../2fa/email/send-2fa-token-email.ts | 8 +- packages/lib/server-only/2fa/enable-2fa.ts | 2 +- packages/lib/server-only/2fa/setup-2fa.ts | 2 +- .../lib/server-only/2fa/verify-password.ts | 2 +- .../server-only/admin/admin-find-documents.ts | 2 +- .../admin/admin-find-unsealed-documents.ts | 2 +- .../admin/admin-super-delete-document.ts | 6 +- .../server-only/admin/get-documents-stats.ts | 4 +- .../server-only/admin/get-entire-document.ts | 2 +- .../get-organisation-detailed-insights.ts | 4 +- .../server-only/admin/get-recipients-stats.ts | 2 +- .../server-only/admin/get-signing-volume.ts | 4 +- .../lib/server-only/admin/get-users-stats.ts | 4 +- .../lib/server-only/admin/update-recipient.ts | 2 +- packages/lib/server-only/admin/update-user.ts | 2 +- .../ai/envelope/detect-fields/index.ts | 2 +- .../create-passkey-authentication-options.ts | 2 +- .../create-passkey-registration-options.ts | 2 +- .../auth/create-passkey-signin-options.ts | 2 +- .../lib/server-only/auth/create-passkey.ts | 2 +- .../lib/server-only/auth/delete-passkey.ts | 2 +- .../lib/server-only/auth/find-passkeys.ts | 2 +- .../auth/send-confirmation-email.ts | 6 +- .../server-only/auth/send-forgot-password.ts | 6 +- .../server-only/auth/send-reset-password.ts | 6 +- .../lib/server-only/auth/update-passkey.ts | 2 +- packages/lib/server-only/cert/cert-status.ts | 2 +- packages/lib/server-only/crypto/decrypt.ts | 6 +- packages/lib/server-only/crypto/encrypt.ts | 4 +- .../document-data/create-document-data.ts | 2 +- .../document-meta/upsert-document-meta.ts | 8 +- .../document/complete-document-with-token.ts | 10 +- .../server-only/document/delete-document.ts | 6 +- .../document/find-document-audit-logs.ts | 2 +- .../server-only/document/find-documents.ts | 6 +- .../document/get-document-by-access-token.ts | 2 +- .../document/get-document-by-token.ts | 2 +- .../get-document-certificate-audit-logs.ts | 2 +- ...-recipient-or-sender-by-share-link-slug.ts | 2 +- .../lib/server-only/document/get-stats.ts | 8 +- .../document/is-recipient-authorized.ts | 2 +- .../document/reject-document-with-token.ts | 4 +- .../server-only/document/resend-document.ts | 18 +-- .../document/search-documents-with-keyword.ts | 4 +- .../document/send-completed-email.ts | 6 +- .../server-only/document/send-delete-email.ts | 6 +- .../lib/server-only/document/send-document.ts | 12 +- .../document/send-pending-email.ts | 6 +- .../server-only/document/viewed-document.ts | 8 +- .../email-domain/create-email-domain.ts | 2 +- .../email-domain/delete-email-domain.ts | 2 +- .../email-domain/reregister-email-domain.ts | 2 +- .../email-domain/verify-email-domain.ts | 2 +- .../server-only/email/get-email-context.ts | 8 +- .../verify-embedding-presign-token.ts | 2 +- .../envelope-attachment/create-attachment.ts | 4 +- .../envelope-attachment/delete-attachment.ts | 4 +- .../find-attachments-by-envelope-id.ts | 4 +- .../find-attachments-by-token.ts | 4 +- .../envelope-attachment/update-attachment.ts | 4 +- .../envelope-item/create-envelope-items.ts | 20 +-- .../envelope-item/delete-envelope-item.ts | 8 +- .../envelope-item/update-envelope-items.ts | 2 +- .../server-only/envelope/create-envelope.ts | 22 +-- .../envelope/duplicate-envelope.ts | 2 +- .../server-only/envelope/find-envelopes.ts | 4 +- .../envelope/get-editor-envelope-by-id.ts | 4 +- .../envelope/get-envelope-by-id.ts | 2 +- ...et-envelope-for-direct-template-signing.ts | 2 +- .../get-envelope-for-recipient-signing.ts | 14 +- .../get-envelope-required-access-data.ts | 2 +- .../envelope/get-envelopes-by-ids.ts | 2 +- .../lib/server-only/envelope/increment-id.ts | 2 +- .../server-only/envelope/orphan-envelopes.ts | 2 +- .../envelope/transfer-team-envelopes.ts | 2 +- .../server-only/envelope/update-envelope.ts | 10 +- .../field/create-envelope-fields.ts | 14 +- .../field/delete-document-field.ts | 8 +- .../field/delete-template-field.ts | 2 +- .../get-completed-fields-for-document.ts | 2 +- .../field/get-completed-fields-for-token.ts | 2 +- .../lib/server-only/field/get-field-by-id.ts | 2 +- .../server-only/field/get-fields-for-token.ts | 2 +- .../field/remove-signed-field-with-token.ts | 10 +- .../field/set-fields-for-document.ts | 20 +-- .../field/set-fields-for-template.ts | 14 +- .../field/sign-field-with-token.ts | 14 +- .../field/update-envelope-fields.ts | 10 +- .../lib/server-only/folder/create-folder.ts | 2 +- .../lib/server-only/folder/delete-folder.ts | 4 +- .../folder/find-folders-internal.ts | 2 +- .../lib/server-only/folder/find-folders.ts | 2 +- .../folder/get-folder-breadcrumbs.ts | 2 +- .../server-only/folder/get-folder-by-id.ts | 4 +- .../lib/server-only/folder/update-folder.ts | 6 +- .../lib/server-only/license/license-client.ts | 2 +- packages/lib/server-only/limits/handler.ts | 2 +- packages/lib/server-only/limits/server.ts | 2 +- .../accept-organisation-invitation.ts | 2 +- .../create-organisation-member-invites.ts | 16 +-- .../organisation/create-organisation.ts | 2 +- .../organisation/get-organisation-claims.ts | 2 +- .../organisation/link-organisation-account.ts | 4 +- ...isation-account-link-confirmation-email.ts | 6 +- .../lib/server-only/pdf/auto-place-fields.ts | 2 +- .../server-only/pdf/generate-audit-log-pdf.ts | 4 +- packages/lib/server-only/pdf/helpers.ts | 2 +- .../server-only/pdf/insert-field-in-pdf-v1.ts | 8 +- .../server-only/pdf/insert-field-in-pdf-v2.ts | 2 +- .../pdf/legacy-insert-field-in-pdf.ts | 8 +- .../server-only/profile/get-avatar-image.ts | 2 +- .../profile/get-public-profile-by-url.ts | 2 +- .../server-only/profile/set-avatar-image.ts | 2 +- .../public-api/create-api-token.ts | 2 +- .../public-api/delete-api-token-by-id.ts | 2 +- .../public-api/get-api-token-by-token.ts | 2 +- .../server-only/public-api/get-api-tokens.ts | 2 +- .../public-api/get-user-by-token.ts | 2 +- .../public-api/test-credentials.ts | 2 +- .../lib/server-only/rate-limit/rate-limit.ts | 2 +- .../recipient/create-envelope-recipients.ts | 16 +-- .../recipient/delete-envelope-recipient.ts | 10 +- .../recipient/get-is-recipient-turn.ts | 2 +- .../recipient/get-next-pending-recipient.ts | 2 +- .../recipient/get-recipient-by-id.ts | 2 +- .../recipient/get-recipient-by-token.ts | 2 +- .../recipient/get-recipient-signatures.ts | 2 +- .../recipient/get-recipient-suggestions.ts | 4 +- .../recipient/get-recipients-for-assistant.ts | 2 +- .../recipient/get-recipients-for-document.ts | 2 +- .../recipient/set-document-recipients.ts | 20 +-- .../recipient/set-template-recipients.ts | 4 +- .../recipient/update-envelope-recipients.ts | 14 +- .../share/create-or-get-share-link.ts | 2 +- .../site-settings/get-site-setting.ts | 2 +- .../site-settings/get-site-settings.ts | 2 +- .../site-settings/upsert-site-setting.ts | 2 +- .../get-active-subscriptions-by-user-id.ts | 2 +- .../team/create-team-email-verification.ts | 14 +- packages/lib/server-only/team/create-team.ts | 4 +- .../team/delete-team-email-verification.ts | 4 +- .../lib/server-only/team/delete-team-email.ts | 10 +- packages/lib/server-only/team/delete-team.ts | 10 +- .../lib/server-only/team/find-team-members.ts | 2 +- packages/lib/server-only/team/find-teams.ts | 2 +- .../lib/server-only/team/get-member-roles.ts | 2 +- .../team/get-team-email-by-email.ts | 2 +- .../lib/server-only/team/get-team-members.ts | 4 +- .../team/get-team-public-profile.ts | 2 +- .../lib/server-only/team/get-team-settings.ts | 2 +- packages/lib/server-only/team/get-team.ts | 2 +- packages/lib/server-only/team/get-teams.ts | 6 +- .../team/resend-team-email-verification.ts | 8 +- .../lib/server-only/team/update-team-email.ts | 2 +- .../team/update-team-public-profile.ts | 2 +- packages/lib/server-only/team/update-team.ts | 6 +- .../create-document-from-direct-template.ts | 10 +- .../template/create-document-from-template.ts | 4 +- .../template/create-template-direct-link.ts | 4 +- .../template/delete-template-direct-link.ts | 4 +- .../server-only/template/delete-template.ts | 2 +- .../server-only/template/find-templates.ts | 2 +- .../get-template-by-direct-link-token.ts | 2 +- .../template/get-template-by-id.ts | 2 +- .../template/toggle-template-direct-link.ts | 2 +- packages/lib/server-only/user/create-user.ts | 2 +- packages/lib/server-only/user/delete-user.ts | 2 +- packages/lib/server-only/user/disable-user.ts | 4 +- packages/lib/server-only/user/enable-user.ts | 4 +- .../user/find-user-security-audit-logs.ts | 2 +- .../lib/server-only/user/forgot-password.ts | 2 +- .../lib/server-only/user/get-all-users.ts | 2 +- .../user/get-monthly-completed-document.ts | 2 +- ...et-most-recent-email-verification-token.ts | 2 +- .../user/get-reset-token-validity.ts | 2 +- .../server-only/user/get-signer-conversion.ts | 2 +- .../lib/server-only/user/get-user-by-email.ts | 2 +- .../lib/server-only/user/get-user-by-id.ts | 2 +- .../user/get-user-by-reset-token.ts | 2 +- .../user/get-user-monthly-growth.ts | 2 +- .../lib/server-only/user/reset-password.ts | 2 +- .../user/send-confirmation-token.ts | 2 +- .../user/service-accounts/deleted-account.ts | 2 +- .../legacy-service-account.ts | 2 +- .../server-only/user/submit-support-ticket.ts | 4 +- .../lib/server-only/user/update-password.ts | 6 +- .../lib/server-only/user/update-profile.ts | 2 +- packages/lib/server-only/user/verify-email.ts | 2 +- .../server-only/webhooks/create-webhook.ts | 2 +- .../webhooks/delete-webhook-by-id.ts | 2 +- .../lib/server-only/webhooks/edit-webhook.ts | 2 +- .../get-all-webhooks-by-event-trigger.ts | 4 +- .../server-only/webhooks/get-webhook-by-id.ts | 2 +- .../webhooks/get-webhooks-by-team-id.ts | 2 +- .../webhooks/zapier/list-documents.ts | 2 +- .../server-only/webhooks/zapier/subscribe.ts | 2 +- .../webhooks/zapier/unsubscribe.ts | 2 +- packages/lib/tsconfig.json | 4 +- packages/lib/types/document-meta.ts | 10 +- packages/lib/types/document.ts | 14 +- packages/lib/types/email-domain.ts | 2 +- packages/lib/types/envelope-editor.ts | 18 +-- packages/lib/types/envelope.ts | 10 +- packages/lib/types/field.ts | 2 +- packages/lib/types/organisation-email.ts | 2 +- packages/lib/types/organisation.ts | 4 +- packages/lib/types/recipient.ts | 6 +- packages/lib/types/subscription.ts | 2 +- packages/lib/types/template.ts | 14 +- .../field-renderer/field-generic-items.ts | 2 +- .../field-renderer/field-renderer.ts | 2 +- .../universal/field-renderer/render-field.ts | 2 +- .../lib/universal/upload/put-file.server.ts | 2 +- packages/lib/universal/upload/put-file.ts | 4 +- .../lib/universal/upload/server-actions.ts | 2 +- packages/lib/utils/env.ts | 2 +- packages/lib/utils/envelope-download.ts | 2 +- packages/lib/utils/envelope-signing.ts | 26 ++-- packages/lib/utils/fields.ts | 2 +- packages/lib/utils/is-valid-return-to.ts | 2 +- .../mask-recipient-tokens-for-document.ts | 2 +- packages/lib/utils/organisations.ts | 2 +- packages/lib/utils/recipients.ts | 2 +- packages/lib/utils/render-email-with-i18n.tsx | 4 +- packages/lib/utils/teams.ts | 4 +- packages/prettier-config/index.cjs | 2 +- packages/prettier-config/package.json | 2 +- .../prisma/__tests__/tenant-isolation.test.ts | 4 +- packages/prisma/helper.ts | 2 +- packages/prisma/index.ts | 2 +- packages/prisma/package.json | 2 +- packages/prisma/schema.prisma | 20 +-- packages/prisma/seed/documents.ts | 6 +- packages/prisma/seed/initial-seed.ts | 10 +- packages/prisma/seed/organisations.ts | 4 +- packages/prisma/seed/teams.ts | 2 +- packages/prisma/seed/templates.ts | 6 +- packages/prisma/seed/users.ts | 4 +- packages/prisma/tenant.ts | 2 +- packages/prisma/tsconfig.json | 2 +- .../prisma/types/document-legacy-schema.ts | 4 +- .../field-with-signature-and-fieldmeta.ts | 2 +- .../prisma/types/template-legacy-schema.ts | 2 +- packages/prisma/types/types.d.ts | 14 +- packages/signing/helpers/tsa.ts | 2 +- packages/signing/index.ts | 4 +- packages/signing/package.json | 4 +- packages/signing/transports/google-cloud.ts | 2 +- packages/signing/transports/local.ts | 2 +- packages/signing/tsconfig.json | 4 +- packages/tailwind-config/package.json | 2 +- packages/tailwind-config/tsconfig.json | 2 +- packages/trpc/package.json | 6 +- .../create-subscription-claim.types.ts | 2 +- .../admin-router/find-admin-organisations.ts | 4 +- .../find-admin-organisations.types.ts | 8 +- .../find-document-audit-logs.types.ts | 4 +- .../admin-router/find-document-jobs.types.ts | 4 +- .../admin-router/find-documents.types.ts | 4 +- .../admin-router/find-email-domains.types.ts | 8 +- .../admin-router/find-subscription-claims.ts | 6 +- .../find-subscription-claims.types.ts | 4 +- .../find-unsealed-documents.types.ts | 2 +- .../admin-router/find-user-teams.types.ts | 8 +- .../admin-router/get-admin-organisation.ts | 4 +- .../get-admin-organisation.types.ts | 18 +-- .../admin-router/get-email-domain.types.ts | 6 +- .../server/admin-router/get-user.types.ts | 2 +- .../reset-two-factor-authentication.ts | 4 +- .../admin-router/update-site-setting.types.ts | 2 +- .../api-token-router/get-api-tokens.types.ts | 2 +- .../auth-router/create-passkey.types.ts | 2 +- .../server/auth-router/find-passkeys.types.ts | 4 +- .../attachment/find-attachments.types.ts | 2 +- .../create-document-temporary.types.ts | 14 +- .../document-router/create-document.types.ts | 14 +- .../distribute-document.types.ts | 6 +- .../find-document-audit-logs.types.ts | 4 +- .../find-documents-internal.types.ts | 6 +- .../document-router/find-documents.types.ts | 4 +- .../trpc/server/document-router/find-inbox.ts | 8 +- .../document-router/find-inbox.types.ts | 4 +- .../get-document-by-token.types.ts | 2 +- .../document-router/get-document.types.ts | 2 +- .../get-documents-by-ids.types.ts | 2 +- .../document-router/share-document.types.ts | 2 +- .../document-router/update-document.types.ts | 6 +- .../create-embedding-document.types.ts | 12 +- .../create-embedding-template.types.ts | 10 +- .../get-multi-sign-document.types.ts | 14 +- .../update-embedding-document.types.ts | 10 +- .../update-embedding-envelope.types.ts | 12 +- .../update-embedding-template.types.ts | 10 +- .../attachment/find-attachments.types.ts | 2 +- .../create-envelope-items.types.ts | 2 +- .../server/envelope-router/create-envelope.ts | 14 +- .../envelope-router/create-envelope.types.ts | 12 +- .../distribute-envelope.types.ts | 2 +- .../create-envelope-fields.types.ts | 4 +- .../get-envelope-field.types.ts | 2 +- .../update-envelope-fields.types.ts | 4 +- .../create-envelope-recipients.types.ts | 4 +- .../get-envelope-recipient.types.ts | 2 +- .../update-envelope-recipients.types.ts | 4 +- .../find-envelope-audit-logs.types.ts | 4 +- .../envelope-router/find-envelopes.types.ts | 4 +- .../get-editor-envelope.types.ts | 2 +- .../get-envelope-items-by-token.types.ts | 2 +- .../get-envelope-items.types.ts | 4 +- .../envelope-router/get-envelope.types.ts | 2 +- .../get-envelopes-by-ids.types.ts | 2 +- .../trpc/server/envelope-router/schema.ts | 2 +- .../set-envelope-fields.types.ts | 4 +- .../set-envelope-recipients.types.ts | 4 +- .../sign-envelope-field.types.ts | 8 +- .../update-envelope-items.types.ts | 2 +- .../envelope-router/update-envelope.types.ts | 6 +- .../envelope-router/use-envelope.types.ts | 14 +- packages/trpc/server/field-router/schema.ts | 6 +- packages/trpc/server/folder-router/schema.ts | 8 +- .../create-organisation-email-domain.types.ts | 2 +- .../delete-organisation-members.ts | 10 +- .../find-organisation-email-domain.ts | 8 +- .../find-organisation-email-domain.types.ts | 4 +- .../find-organisation-emails.ts | 8 +- .../find-organisation-emails.types.ts | 4 +- .../find-organisation-groups.ts | 8 +- .../find-organisation-groups.types.ts | 4 +- .../find-organisation-member-invites.ts | 10 +- .../find-organisation-member-invites.types.ts | 4 +- .../find-organisation-members.ts | 8 +- .../find-organisation-members.types.ts | 8 +- .../get-organisation-authentication-portal.ts | 8 +- ...rganisation-authentication-portal.types.ts | 2 +- .../get-organisation-email-domain.ts | 8 +- .../get-organisation-email-domain.types.ts | 2 +- .../get-organisation-member-invites.types.ts | 4 +- .../get-organisation-session.ts | 6 +- .../get-organisation-session.types.ts | 8 +- .../organisation-router/get-organisation.ts | 4 +- .../get-organisation.types.ts | 12 +- .../organisation-router/get-organisations.ts | 4 +- .../get-organisations.types.ts | 4 +- .../resend-organisation-member-invite.ts | 10 +- ...rganisation-authentication-portal.types.ts | 2 +- .../update-organisation-settings.types.ts | 12 +- .../trpc/server/recipient-router/schema.ts | 6 +- .../server/team-router/create-team-members.ts | 12 +- .../team-router/create-team-members.types.ts | 2 +- .../server/team-router/find-team-groups.ts | 6 +- .../team-router/find-team-groups.types.ts | 4 +- .../team-router/find-team-members.types.ts | 6 +- .../server/team-router/find-teams.types.ts | 4 +- .../team-router/get-team-members.types.ts | 4 +- .../trpc/server/team-router/get-team.types.ts | 8 +- packages/trpc/server/team-router/schema.ts | 2 +- .../team-router/update-team-settings.types.ts | 12 +- .../get-templates-by-ids.types.ts | 2 +- .../trpc/server/template-router/schema.ts | 26 ++-- .../webhook-router/find-webhook-calls.ts | 10 +- .../find-webhook-calls.types.ts | 4 +- .../resend-webhook-call.types.ts | 2 +- packages/trpc/tsconfig.json | 2 +- packages/trpc/zap/client/index.ts | 2 +- packages/trpc/zap/react/index.tsx | 2 +- packages/trpc/zap/runtime/error.ts | 2 +- packages/trpc/zap/server/context.ts | 2 +- packages/trpc/zap/server/handlers/admin.ts | 56 ++++---- .../trpc/zap/server/handlers/api-token.ts | 6 +- packages/trpc/zap/server/handlers/auth.ts | 16 +-- packages/trpc/zap/server/handlers/document.ts | 76 +++++------ .../trpc/zap/server/handlers/embedding.ts | 50 +++---- packages/trpc/zap/server/handlers/envelope.ts | 92 ++++++------- packages/trpc/zap/server/handlers/field.ts | 18 +-- packages/trpc/zap/server/handlers/folder.ts | 16 +-- .../trpc/zap/server/handlers/organisation.ts | 42 +++--- packages/trpc/zap/server/handlers/profile.ts | 14 +- .../trpc/zap/server/handlers/recipient.ts | 18 +-- packages/trpc/zap/server/handlers/team.ts | 48 +++---- packages/trpc/zap/server/handlers/template.ts | 50 +++---- packages/trpc/zap/server/handlers/webhook.ts | 20 +-- packages/trpc/zap/server/mint.ts | 10 +- packages/tsconfig/ambient.d.ts | 2 +- packages/tsconfig/package.json | 2 +- .../ui/components/common/copy-text-button.tsx | 4 +- .../common/language-switcher-dialog.tsx | 8 +- .../document/document-email-checkboxes.tsx | 6 +- .../document-global-auth-access-select.tsx | 8 +- .../document-global-auth-action-select.tsx | 8 +- .../document/document-read-only-fields.tsx | 22 +-- .../document/document-share-button.tsx | 10 +- .../document-signature-settings-tooltip.tsx | 2 +- .../document/document-visibility-select.tsx | 8 +- .../envelope-recipient-field-tooltip.tsx | 4 +- .../document/expiration-period-picker.tsx | 6 +- .../field/envelope-field-tooltip.tsx | 4 +- .../ui/components/field/field-tooltip.tsx | 2 +- packages/ui/components/field/field.tsx | 10 +- .../recipient-action-auth-select.tsx | 8 +- .../recipient-autocomplete-input.tsx | 2 +- .../recipient/recipient-role-select.tsx | 6 +- packages/ui/package.json | 8 +- packages/ui/primitives/document-dropzone.tsx | 6 +- .../primitives/document-flow/add-fields.tsx | 20 +-- .../document-flow/add-fields.types.ts | 2 +- .../primitives/document-flow/add-settings.tsx | 32 ++--- .../document-flow/add-settings.types.ts | 14 +- .../primitives/document-flow/add-signers.tsx | 28 ++-- .../document-flow/add-signers.types.ts | 2 +- .../primitives/document-flow/add-subject.tsx | 24 ++-- .../document-flow/add-subject.types.ts | 2 +- .../document-flow/field-content.tsx | 6 +- .../field-item-advanced-settings.tsx | 6 +- .../primitives/document-flow/field-item.tsx | 10 +- .../checkbox-field.tsx | 16 +-- .../date-field.tsx | 10 +- .../dropdown-field.tsx | 14 +- .../email-field.tsx | 10 +- .../initials-field.tsx | 8 +- .../name-field.tsx | 10 +- .../number-field.tsx | 14 +- .../radio-field.tsx | 14 +- .../text-field.tsx | 14 +- .../missing-signature-field-dialog.tsx | 4 +- .../signing-order-confirmation.tsx | 2 +- packages/ui/primitives/document-flow/types.ts | 2 +- .../ui/primitives/document-upload-button.tsx | 10 +- .../ui/primitives/multi-select-combobox.tsx | 2 +- packages/ui/primitives/recipient-selector.tsx | 2 +- packages/ui/primitives/select.tsx | 2 +- .../ui/primitives/signature-pad/canvas.ts | 2 +- .../signature-pad-color-picker.tsx | 2 +- .../signature-pad/signature-pad-dialog.tsx | 4 +- .../signature-pad/signature-pad-draw.tsx | 4 +- .../signature-pad/signature-pad-upload.tsx | 4 +- .../signature-pad/signature-pad.tsx | 4 +- .../signature-pad/signature-render.tsx | 2 +- .../template-flow/add-template-fields.tsx | 40 +++--- .../add-template-fields.types.ts | 2 +- .../add-template-placeholder-recipients.tsx | 30 ++-- ...d-template-placeholder-recipients.types.ts | 2 +- .../template-flow/add-template-settings.tsx | 38 +++--- .../add-template-settings.types.tsx | 16 +-- packages/ui/primitives/theme-switcher.tsx | 2 +- packages/ui/tailwind.config.cjs | 2 +- packages/ui/tsconfig.json | 2 +- prettier.config.cjs | 2 +- render.yaml | 2 +- scripts/backfill-pg-to-sqlite.ts | 2 +- 1078 files changed, 5390 insertions(+), 5390 deletions(-) diff --git a/.agents/plans/pale-lemon-rock-pnpm-migration.md b/.agents/plans/pale-lemon-rock-pnpm-migration.md index b994d83d3..31e479ff1 100644 --- a/.agents/plans/pale-lemon-rock-pnpm-migration.md +++ b/.agents/plans/pale-lemon-rock-pnpm-migration.md @@ -120,7 +120,7 @@ Packages duplicated across 3+ workspaces are prime candidates: | `nanoid` | 4 | Yes | | `@lingui/core` / `macro` / `react` | 2-3 | Yes | | `@simplewebauthn/server` | 3 | Yes | -| `@hanzo/sign-*` (internal) | varies | No (use `workspace:*`) | +| `@hanzo/esign-*` (internal) | varies | No (use `workspace:*`) | | `@aws-sdk/*` | 2 | Yes | | `hono` | 2 | Yes | | `posthog-node` / `posthog-js` | 2 | Yes | @@ -210,13 +210,13 @@ This is a mechanical find-and-replace across all workspace `package.json` files. #### Step 11: Convert internal references to `workspace:*` -All `@hanzo/sign-*` internal package references currently use `"*"`. Convert to pnpm's `workspace:*` protocol: +All `@hanzo/esign-*` internal package references currently use `"*"`. Convert to pnpm's `workspace:*` protocol: ```json { "dependencies": { - "@hanzo/sign-lib": "workspace:*", - "@hanzo/sign-prisma": "workspace:*" + "@hanzo/esign-lib": "workspace:*", + "@hanzo/esign-prisma": "workspace:*" } } ``` @@ -297,7 +297,7 @@ With catalogs and strict resolution, dependencies currently hoisted to root `pac - **Mitigation:** Update cache keys to use `pnpm-lock.yaml` hash. First CI run will be slower, subsequent runs will cache normally. 5. **Turbo + pnpm compatibility:** Turbo has first-class pnpm support, but `turbo prune` output format may differ slightly. - - **Mitigation:** Test `turbo prune --scope=@hanzo/sign-remix --docker` and verify output structure before updating Dockerfile. + - **Mitigation:** Test `turbo prune --scope=@hanzo/esign-remix --docker` and verify output structure before updating Dockerfile. ## Verification Checklist diff --git a/.agents/plans/smooth-coral-earth-database-rate-limiting.md b/.agents/plans/smooth-coral-earth-database-rate-limiting.md index 7edd27222..2688e3a24 100644 --- a/.agents/plans/smooth-coral-earth-database-rate-limiting.md +++ b/.agents/plans/smooth-coral-earth-database-rate-limiting.md @@ -279,7 +279,7 @@ Create a reusable Hono middleware factory in `packages/lib/server-only/rate-limi ```typescript import { type MiddlewareHandler } from 'hono'; -import { getIpAddress } from '@hanzo/sign-lib/universal/get-ip-address'; +import { getIpAddress } from '@hanzo/esign-lib/universal/get-ip-address'; export const createRateLimitMiddleware = ( limiter: ReturnType, @@ -326,8 +326,8 @@ import { rateLimiter } from 'hono-rate-limiter'; const rateLimitMiddleware = rateLimiter({ ... }); // After -import { createRateLimitMiddleware } from '@hanzo/sign-lib/server-only/rate-limit/rate-limit-middleware'; -import { apiV1RateLimit, apiV2RateLimit, aiRateLimit } from '@hanzo/sign-lib/server-only/rate-limit/rate-limits'; +import { createRateLimitMiddleware } from '@hanzo/esign-lib/server-only/rate-limit/rate-limit-middleware'; +import { apiV1RateLimit, apiV2RateLimit, aiRateLimit } from '@hanzo/esign-lib/server-only/rate-limit/rate-limits'; const apiV1RateLimitMiddleware = createRateLimitMiddleware(apiV1RateLimit); const apiV2RateLimitMiddleware = createRateLimitMiddleware(apiV2RateLimit); diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 100b15297..174e8ef8f 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -1,7 +1,7 @@ /** @type {import('eslint').Linter.Config} */ module.exports = { root: true, - extends: ['@hanzo/sign-eslint-config'], + extends: ['@hanzo/esign-eslint-config'], rules: { '@next/next/no-img-element': 'off', 'no-unreachable': 'error', diff --git a/.opencode/commands/continue.md b/.opencode/commands/continue.md index 460806afe..710730ae3 100644 --- a/.opencode/commands/continue.md +++ b/.opencode/commands/continue.md @@ -24,7 +24,7 @@ Run these commands to understand where the previous session left off: ```bash git status # See uncommitted changes git log --oneline -10 # See recent commits -npm run typecheck -w @hanzo/sign-remix # Check for type errors +npm run typecheck -w @hanzo/esign-remix # Check for type errors npm run lint:fix # Check for linting issues ``` @@ -67,9 +67,9 @@ Review the code that's already been written to understand: Work continuously through these steps: 1. **Implement** - Write the code for the current task -2. **Typecheck** - Run `npm run typecheck -w @hanzo/sign-remix` to verify types +2. **Typecheck** - Run `npm run typecheck -w @hanzo/esign-remix` to verify types 3. **Lint** - Run `npm run lint:fix` to fix linting issues -4. **Test** - If non-trivial, run E2E tests: `npm run test:dev -w @hanzo/sign-app-tests` +4. **Test** - If non-trivial, run E2E tests: `npm run test:dev -w @hanzo/esign-app-tests` 5. **Fix** - If tests fail, fix and re-run 6. **Repeat** - Move to next task @@ -93,14 +93,14 @@ Work continuously through these steps: ```bash # Type checking -npm run typecheck -w @hanzo/sign-remix +npm run typecheck -w @hanzo/esign-remix # Linting npm run lint:fix # E2E Tests (only for non-trivial work) -npm run test:dev -w @hanzo/sign-app-tests # Run E2E tests in dev mode -npm run test-ui:dev -w @hanzo/sign-app-tests # Run E2E tests with UI +npm run test:dev -w @hanzo/esign-app-tests # Run E2E tests in dev mode +npm run test-ui:dev -w @hanzo/esign-app-tests # Run E2E tests with UI npm run test:e2e # Run full E2E test suite # Development diff --git a/.opencode/commands/document.md b/.opencode/commands/document.md index 0a1efc861..148be3125 100644 --- a/.opencode/commands/document.md +++ b/.opencode/commands/document.md @@ -66,14 +66,14 @@ Brief description of what this module/feature does and when to use it. If there are specific packages or imports needed: ```bash -npm install @hanzo/sign-package-name +npm install @hanzo/esign-package-name ``` ## Quick Start ```jsx // Minimal working example -import { Component } from '@hanzo/sign-package'; +import { Component } from '@hanzo/esign-package'; const Example = () => { return ; @@ -96,7 +96,7 @@ Description of what it does. #### Example ```jsx -import { Component } from '@hanzo/sign-package'; +import { Component } from '@hanzo/esign-package'; ; ``` diff --git a/.opencode/commands/implement.md b/.opencode/commands/implement.md index 168f0ae42..c37e7edb4 100644 --- a/.opencode/commands/implement.md +++ b/.opencode/commands/implement.md @@ -55,9 +55,9 @@ You are implementing a specification from the `.agents/plans/` directory. Work a Work continuously through these steps: 1. **Implement** - Write the code for the current task -2. **Typecheck** - Run `npm run typecheck -w @hanzo/sign-remix` to verify types +2. **Typecheck** - Run `npm run typecheck -w @hanzo/esign-remix` to verify types 3. **Lint** - Run `npm run lint:fix` to fix linting issues -4. **Test** - If non-trivial, run E2E tests: `npm run test:dev -w @hanzo/sign-app-tests` +4. **Test** - If non-trivial, run E2E tests: `npm run test:dev -w @hanzo/esign-app-tests` 5. **Fix** - If tests fail, fix and re-run 6. **Repeat** - Move to next task @@ -81,14 +81,14 @@ Work continuously through these steps: ```bash # Type checking -npm run typecheck -w @hanzo/sign-remix +npm run typecheck -w @hanzo/esign-remix # Linting npm run lint:fix # E2E Tests (only for non-trivial work) -npm run test:dev -w @hanzo/sign-app-tests # Run E2E tests in dev mode -npm run test-ui:dev -w @hanzo/sign-app-tests # Run E2E tests with UI +npm run test:dev -w @hanzo/esign-app-tests # Run E2E tests in dev mode +npm run test-ui:dev -w @hanzo/esign-app-tests # Run E2E tests with UI npm run test:e2e # Run full E2E test suite # Development diff --git a/.opencode/skills/envelope-editor-v2-e2e/SKILL.md b/.opencode/skills/envelope-editor-v2-e2e/SKILL.md index 4cd010443..019807ada 100644 --- a/.opencode/skills/envelope-editor-v2-e2e/SKILL.md +++ b/.opencode/skills/envelope-editor-v2-e2e/SKILL.md @@ -79,8 +79,8 @@ import { type Page, expect, test } from '@playwright/test'; // Prisma enums if needed for DB assertions import { SomePrismaEnum } from '@prisma/client'; -import { nanoid } from '@hanzo/sign-lib/universal/id'; -import { prisma } from '@hanzo/sign-prisma'; +import { nanoid } from '@hanzo/esign-lib/universal/id'; +import { prisma } from '@hanzo/esign-prisma'; import { type TEnvelopeEditorSurface, // Import needed helpers from the fixture @@ -333,16 +333,16 @@ Every test uses an `externalId` (e.g., `e2e-feature-${nanoid()}`) set via the se ```bash # Run all envelope editor tests -npm run test:dev -w @hanzo/sign-app-tests -- --grep "Envelope Editor V2" +npm run test:dev -w @hanzo/esign-app-tests -- --grep "Envelope Editor V2" # Run a specific test file -npm run test:dev -w @hanzo/sign-app-tests -- e2e/envelope-editor-v2/envelope-recipients.spec.ts +npm run test:dev -w @hanzo/esign-app-tests -- e2e/envelope-editor-v2/envelope-recipients.spec.ts # Run with UI -npm run test-ui:dev -w @hanzo/sign-app-tests -- e2e/envelope-editor-v2/ +npm run test-ui:dev -w @hanzo/esign-app-tests -- e2e/envelope-editor-v2/ # Run specific test by name -npm run test:dev -w @hanzo/sign-app-tests -- --grep "documents/: add myself" +npm run test:dev -w @hanzo/esign-app-tests -- --grep "documents/: add myself" ``` ## Checklist When Writing a New Test diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 2e156ced5..6320a375d 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -41,33 +41,33 @@ Hanzo eSign is an open-source document signing platform built as a **monorepo** | Package | Description | Port | | -------------------------- | -------------------------------------------------------- | ---- | -| `@hanzo/sign-remix` | Main application - React Router (Remix) with Hono server | 3000 | -| `@hanzo/sign-documentation` | Documentation site (Next.js + Nextra) | 3002 | -| `@hanzo/sign-openpage-api` | Public analytics API | 3003 | +| `@hanzo/esign-remix` | Main application - React Router (Remix) with Hono server | 3000 | +| `@hanzo/esign-documentation` | Documentation site (Next.js + Nextra) | 3002 | +| `@hanzo/esign-openpage-api` | Public analytics API | 3003 | ### Core Packages (`packages/`) | Package | Description | | -------------------- | --------------------------------------------------------- | -| `@hanzo/sign-lib` | Core business logic (server-only, client-only, universal) | -| `@hanzo/sign-trpc` | tRPC API layer with OpenAPI support (API V2) | -| `@hanzo/sign-api` | REST API layer using ts-rest (API V1) | -| `@hanzo/sign-prisma` | Database layer (Prisma ORM + Kysely) | -| `@hanzo/sign-ui` | UI component library (Shadcn + Radix + Tailwind) | -| `@hanzo/sign-email` | Email templates and mailer (React Email) | -| `@hanzo/sign-auth` | Authentication (OAuth via Arctic, WebAuthn/Passkeys) | -| `@hanzo/sign-signing` | PDF signing (Local P12, Google Cloud KMS) | -| `@hanzo/sign-assets` | Static assets | +| `@hanzo/esign-lib` | Core business logic (server-only, client-only, universal) | +| `@hanzo/esign-trpc` | tRPC API layer with OpenAPI support (API V2) | +| `@hanzo/esign-api` | REST API layer using ts-rest (API V1) | +| `@hanzo/esign-prisma` | Database layer (Prisma ORM + Kysely) | +| `@hanzo/esign-ui` | UI component library (Shadcn + Radix + Tailwind) | +| `@hanzo/esign-email` | Email templates and mailer (React Email) | +| `@hanzo/esign-auth` | Authentication (OAuth via Arctic, WebAuthn/Passkeys) | +| `@hanzo/esign-signing` | PDF signing (Local P12, Google Cloud KMS) | +| `@hanzo/esign-assets` | Static assets | ### Supporting Packages | Package | Description | | ---------------------------- | ------------------------- | -| `@hanzo/sign-app-tests` | E2E tests (Playwright) | -| `@hanzo/sign-eslint-config` | Shared ESLint config | -| `@hanzo/sign-prettier-config` | Shared Prettier config | -| `@hanzo/sign-tailwind-config` | Shared Tailwind config | -| `@hanzo/sign-tsconfig` | Shared TypeScript configs | +| `@hanzo/esign-app-tests` | E2E tests (Playwright) | +| `@hanzo/esign-eslint-config` | Shared ESLint config | +| `@hanzo/esign-prettier-config` | Shared Prettier config | +| `@hanzo/esign-tailwind-config` | Shared Tailwind config | +| `@hanzo/esign-tsconfig` | Shared TypeScript configs | ## Tech Stack diff --git a/CODE_STYLE.md b/CODE_STYLE.md index d2123ae4d..bcb5a9920 100644 --- a/CODE_STYLE.md +++ b/CODE_STYLE.md @@ -90,10 +90,10 @@ import type { Document, Recipient } from '@prisma/client'; import { DocumentStatus, RecipientRole } from '@prisma/client'; import { match } from 'ts-pattern'; -// 3. Internal package imports (from @hanzo/sign-*) -import { AppError } from '@hanzo/sign-lib/errors/app-error'; -import { prisma } from '@hanzo/sign-prisma'; -import { Button } from '@hanzo/sign-ui/primitives/button'; +// 3. Internal package imports (from @hanzo/esign-*) +import { AppError } from '@hanzo/esign-lib/errors/app-error'; +import { prisma } from '@hanzo/esign-prisma'; +import { Button } from '@hanzo/esign-ui/primitives/button'; // 4. Relative imports import { getTeamById } from '../team/get-team'; @@ -107,8 +107,8 @@ import type { FindResultResponse } from './types'; // ✅ Use type imports for types import type { Document } from '@prisma/client'; -import { Button } from '@hanzo/sign-ui/primitives/button'; -import { Input } from '@hanzo/sign-ui/primitives/input'; +import { Button } from '@hanzo/esign-ui/primitives/button'; +import { Input } from '@hanzo/esign-ui/primitives/input'; ``` --- @@ -340,7 +340,7 @@ onClick={() => void onFormSubmit()} ```typescript // ✅ Blank line after imports -import { prisma } from '@hanzo/sign-prisma'; +import { prisma } from '@hanzo/esign-prisma'; export const findDocuments = async () => { // ... diff --git a/README.md b/README.md index 107b8bef2..a1588566f 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ Contact us if you are interested in our Enterprise plan for large organizations - [shadcn/ui](https://ui.shadcn.com/) - Component Library - [react-email](https://react.email/) - Email Templates - [tRPC](https://trpc.io/) - API -- [@hanzo/sign-pdf-sign](https://www.npmjs.com/package/@hanzo/sign-pdf-sign) - PDF Signatures (launching soon) +- [@hanzo/esign-pdf-sign](https://www.npmjs.com/package/@hanzo/esign-pdf-sign) - PDF Signatures (launching soon) - [React-PDF](https://github.com/wojtekmaj/react-pdf) - Viewing PDFs - [PDF-Lib](https://github.com/Hopding/pdf-lib) - PDF manipulation - [Stripe](https://stripe.com/) - Payments @@ -179,7 +179,7 @@ git clone https://github.com//hanzo-sign --- -- Optional: Seed the database using `npm run prisma:seed -w @hanzo/sign-prisma` to create a test user and document. +- Optional: Seed the database using `npm run prisma:seed -w @hanzo/esign-prisma` to create a test user and document. - Optional: Create your own signing certificate. - To generate your own using these steps and a Linux Terminal or Windows Subsystem for Linux (WSL), see **[Create your own signing certificate](./SIGNING.md)**. diff --git a/apps/docs/content/docs/developers/embedding/authoring.mdx b/apps/docs/content/docs/developers/embedding/authoring.mdx index 24888379d..84123cb60 100644 --- a/apps/docs/content/docs/developers/embedding/authoring.mdx +++ b/apps/docs/content/docs/developers/embedding/authoring.mdx @@ -49,7 +49,7 @@ See the [API documentation](https://openapi.esign.hanzo.ai/reference#tag/embeddi ## Creating Documents ```jsx -import { EmbedCreateDocumentV1 } from '@hanzo/sign-embed-react'; +import { EmbedCreateDocumentV1 } from '@hanzo/esign-embed-react'; const DocumentCreator = ({ presignToken }) => { return ( @@ -72,7 +72,7 @@ const DocumentCreator = ({ presignToken }) => { ## Creating Templates ```jsx -import { EmbedCreateTemplateV1 } from '@hanzo/sign-embed-react'; +import { EmbedCreateTemplateV1 } from '@hanzo/esign-embed-react'; const TemplateCreator = ({ presignToken }) => { return ( @@ -94,7 +94,7 @@ const TemplateCreator = ({ presignToken }) => { ## Editing Documents ```jsx -import { EmbedUpdateDocumentV1 } from '@hanzo/sign-embed-react'; +import { EmbedUpdateDocumentV1 } from '@hanzo/esign-embed-react'; const DocumentEditor = ({ presignToken, documentId }) => { return ( @@ -117,7 +117,7 @@ const DocumentEditor = ({ presignToken, documentId }) => { ## Editing Templates ```jsx -import { EmbedUpdateTemplateV1 } from '@hanzo/sign-embed-react'; +import { EmbedUpdateTemplateV1 } from '@hanzo/esign-embed-react'; const TemplateEditor = ({ presignToken, templateId }) => { return ( @@ -217,7 +217,7 @@ This example shows a full workflow where users create a document and then edit i ```tsx import { useState } from 'react'; -import { EmbedCreateDocumentV1, EmbedUpdateDocumentV1 } from '@hanzo/sign-embed-react'; +import { EmbedCreateDocumentV1, EmbedUpdateDocumentV1 } from '@hanzo/esign-embed-react'; const DocumentManager = ({ presignToken }) => { const [documentId, setDocumentId] = useState(null); diff --git a/apps/docs/content/docs/developers/embedding/index.mdx b/apps/docs/content/docs/developers/embedding/index.mdx index 113e7a6a9..004b07d19 100644 --- a/apps/docs/content/docs/developers/embedding/index.mdx +++ b/apps/docs/content/docs/developers/embedding/index.mdx @@ -40,7 +40,7 @@ Direct templates are evergreen - each time a user completes signing, a new docum Use the `EmbedDirectTemplate` component with a template token: ```jsx -import { EmbedDirectTemplate } from '@hanzo/sign-embed-react'; +import { EmbedDirectTemplate } from '@hanzo/esign-embed-react'; - + -A [Web Components](https://developer.mozilla.org/en-US/docs/Web/API/Web_components) SDK (`@hanzo/sign-embed-webcomponent`) is also available for use outside of JavaScript frameworks. It works in any environment that supports custom elements. +A [Web Components](https://developer.mozilla.org/en-US/docs/Web/API/Web_components) SDK (`@hanzo/esign-embed-webcomponent`) is also available for use outside of JavaScript frameworks. It works in any environment that supports custom elements. If you prefer not to use any SDK, you can embed signing using [Direct Links](/docs/developers/embedding/direct-links) with a plain iframe or redirect. diff --git a/apps/docs/content/docs/developers/embedding/sdks/angular.mdx b/apps/docs/content/docs/developers/embedding/sdks/angular.mdx index f57a1039a..eead70d57 100644 --- a/apps/docs/content/docs/developers/embedding/sdks/angular.mdx +++ b/apps/docs/content/docs/developers/embedding/sdks/angular.mdx @@ -8,9 +8,9 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; ## Installation - ``` npm install @hanzo/sign-embed-angular ``` - ``` yarn add @hanzo/sign-embed-angular ``` - ``` pnpm add @hanzo/sign-embed-angular ``` + ``` npm install @hanzo/esign-embed-angular ``` + ``` yarn add @hanzo/esign-embed-angular ``` + ``` pnpm add @hanzo/esign-embed-angular ``` --- @@ -19,7 +19,7 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; ```typescript import { Component } from '@angular/core'; -import { EmbedDirectTemplate } from '@hanzo/sign-embed-angular'; +import { EmbedDirectTemplate } from '@hanzo/esign-embed-angular'; @Component({ selector: 'app-signing', @@ -61,7 +61,7 @@ export class SigningComponent { ```typescript import { Component, Input } from '@angular/core'; -import { EmbedSignDocument } from '@hanzo/sign-embed-angular'; +import { EmbedSignDocument } from '@hanzo/esign-embed-angular'; @Component({ selector: 'app-signing', diff --git a/apps/docs/content/docs/developers/embedding/sdks/index.mdx b/apps/docs/content/docs/developers/embedding/sdks/index.mdx index 7e82db6ab..cc78bc8e2 100644 --- a/apps/docs/content/docs/developers/embedding/sdks/index.mdx +++ b/apps/docs/content/docs/developers/embedding/sdks/index.mdx @@ -8,28 +8,28 @@ Install the SDK for your framework and embed document signing with a few lines o - + diff --git a/apps/docs/content/docs/developers/embedding/sdks/preact.mdx b/apps/docs/content/docs/developers/embedding/sdks/preact.mdx index 0a8d9c8f8..57bc1d109 100644 --- a/apps/docs/content/docs/developers/embedding/sdks/preact.mdx +++ b/apps/docs/content/docs/developers/embedding/sdks/preact.mdx @@ -8,9 +8,9 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; ## Installation - ``` npm install @hanzo/sign-embed-preact ``` - ``` yarn add @hanzo/sign-embed-preact ``` - ``` pnpm add @hanzo/sign-embed-preact ``` + ``` npm install @hanzo/esign-embed-preact ``` + ``` yarn add @hanzo/esign-embed-preact ``` + ``` pnpm add @hanzo/esign-embed-preact ``` --- @@ -18,7 +18,7 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; ## Direct Template ```tsx -import { EmbedDirectTemplate } from '@hanzo/sign-embed-preact'; +import { EmbedDirectTemplate } from '@hanzo/esign-embed-preact'; const SigningPage = () => { return ( @@ -43,7 +43,7 @@ const SigningPage = () => { ## Signing Token ```tsx -import { EmbedSignDocument } from '@hanzo/sign-embed-preact'; +import { EmbedSignDocument } from '@hanzo/esign-embed-preact'; const SigningPage = ({ token }: { token: string }) => { return ( @@ -62,7 +62,7 @@ const SigningPage = ({ token }: { token: string }) => { ## Styling (Platform Plan) ```tsx -import { EmbedDirectTemplate } from '@hanzo/sign-embed-preact'; +import { EmbedDirectTemplate } from '@hanzo/esign-embed-preact'; const StyledEmbed = () => { return ( diff --git a/apps/docs/content/docs/developers/embedding/sdks/react.mdx b/apps/docs/content/docs/developers/embedding/sdks/react.mdx index 3b6f5c583..c78273909 100644 --- a/apps/docs/content/docs/developers/embedding/sdks/react.mdx +++ b/apps/docs/content/docs/developers/embedding/sdks/react.mdx @@ -8,9 +8,9 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; ## Installation - ``` npm install @hanzo/sign-embed-react ``` - ``` yarn add @hanzo/sign-embed-react ``` - ``` pnpm add @hanzo/sign-embed-react ``` + ``` npm install @hanzo/esign-embed-react ``` + ``` yarn add @hanzo/esign-embed-react ``` + ``` pnpm add @hanzo/esign-embed-react ``` --- @@ -18,7 +18,7 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; ## Direct Template ```tsx -import { EmbedDirectTemplate } from '@hanzo/sign-embed-react'; +import { EmbedDirectTemplate } from '@hanzo/esign-embed-react'; const SigningPage = () => { return ( @@ -43,7 +43,7 @@ const SigningPage = () => { ## Signing Token ```tsx -import { EmbedSignDocument } from '@hanzo/sign-embed-react'; +import { EmbedSignDocument } from '@hanzo/esign-embed-react'; const SigningPage = ({ token }: { token: string }) => { return ( @@ -62,7 +62,7 @@ const SigningPage = ({ token }: { token: string }) => { ## Styling (Platform Plan) ```tsx -import { EmbedDirectTemplate } from '@hanzo/sign-embed-react'; +import { EmbedDirectTemplate } from '@hanzo/esign-embed-react'; const StyledEmbed = () => { return ( @@ -94,7 +94,7 @@ See [CSS Variables](/docs/developers/embedding/css-variables) for all available ```tsx import { useState } from 'react'; -import { EmbedDirectTemplate } from '@hanzo/sign-embed-react'; +import { EmbedDirectTemplate } from '@hanzo/esign-embed-react'; type Status = 'loading' | 'ready' | 'completed' | 'error'; diff --git a/apps/docs/content/docs/developers/embedding/sdks/solid.mdx b/apps/docs/content/docs/developers/embedding/sdks/solid.mdx index 38dee17dd..74a876ae7 100644 --- a/apps/docs/content/docs/developers/embedding/sdks/solid.mdx +++ b/apps/docs/content/docs/developers/embedding/sdks/solid.mdx @@ -8,9 +8,9 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; ## Installation - ``` npm install @hanzo/sign-embed-solid ``` - ``` yarn add @hanzo/sign-embed-solid ``` - ``` pnpm add @hanzo/sign-embed-solid ``` + ``` npm install @hanzo/esign-embed-solid ``` + ``` yarn add @hanzo/esign-embed-solid ``` + ``` pnpm add @hanzo/esign-embed-solid ``` --- @@ -18,7 +18,7 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; ## Direct Template ```tsx -import { EmbedDirectTemplate } from '@hanzo/sign-embed-solid'; +import { EmbedDirectTemplate } from '@hanzo/esign-embed-solid'; const SigningPage = () => { return ( @@ -43,7 +43,7 @@ const SigningPage = () => { ## Signing Token ```tsx -import { EmbedSignDocument } from '@hanzo/sign-embed-solid'; +import { EmbedSignDocument } from '@hanzo/esign-embed-solid'; const SigningPage = (props: { token: string }) => { return ( @@ -62,7 +62,7 @@ const SigningPage = (props: { token: string }) => { ## Styling (Platform Plan) ```tsx -import { EmbedDirectTemplate } from '@hanzo/sign-embed-solid'; +import { EmbedDirectTemplate } from '@hanzo/esign-embed-solid'; const StyledEmbed = () => { return ( diff --git a/apps/docs/content/docs/developers/embedding/sdks/svelte.mdx b/apps/docs/content/docs/developers/embedding/sdks/svelte.mdx index 097adb1a1..a422a8b7c 100644 --- a/apps/docs/content/docs/developers/embedding/sdks/svelte.mdx +++ b/apps/docs/content/docs/developers/embedding/sdks/svelte.mdx @@ -8,9 +8,9 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; ## Installation - ``` npm install @hanzo/sign-embed-svelte ``` - ``` yarn add @hanzo/sign-embed-svelte ``` - ``` pnpm add @hanzo/sign-embed-svelte ``` + ``` npm install @hanzo/esign-embed-svelte ``` + ``` yarn add @hanzo/esign-embed-svelte ``` + ``` pnpm add @hanzo/esign-embed-svelte ``` --- @@ -19,7 +19,7 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; ```svelte