Compare commits

...

9 Commits

Author SHA1 Message Date
Lucas Smith d08049ed3b v2.5.1 2026-01-27 20:25:31 +11:00
Lucas Smith 7a583aa7af fix: preserve prompt parameter in OAuth authorize URL builder (#2421)
The prompt option was being discarded for OAuth authorize URLs after
adding support for the NEXT_PRIVATE_OIDC_PROMPT env var. This meant
select_account (used elsewhere) was not being passed through.

Now defaults prompt to the provided option (or 'login'), and only
overwrites it when a valid OIDC prompt env var is set. Also adds a
type guard to validate the env var value.
2026-01-27 20:25:16 +11:00
David Nguyen b590076d85 fix: allow past due subscriptions (#2420)
Allow plans with past_due subscriptions to continue to use the platform
until the subscription becomes inactive.
2026-01-27 18:45:58 +11:00
Lucas Smith 65e30b88be fix: persist formValues in document creation endpoints (#2419) 2026-01-27 16:21:09 +11:00
Ted Liang 9c6ee88cc4 fix: security CVE-2026-23527 (#2399) 2026-01-27 15:52:34 +11:00
Lucas Smith 6028ad9158 chore: add translations (#2412)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-01-27 15:44:01 +11:00
Lucas Smith 7fc6f5bb6e fix: make teamId optional in support form validation (#2417)
The contact form accepts teamId as an optional param based on
where the user clicks "Support" from. Previously, when opened
from a non-team context, the null teamId would be parsed to NaN
and fail validation, causing the form to error out. Now the
validation only runs when a teamId is actually provided.
2026-01-27 15:00:53 +11:00
Jorge Ramirez 17b261df1f fix(api): add take parameter to template search query for pagination (#2396)
This PR fixes a bug in the `/api/v2/template` endpoint where the
pagination parameter `perPage` was being ignored. Previously, the
endpoint would return all matching templates regardless of the requested
limit, which could lead to performance issues and incorrect API
behavior.
2026-01-27 15:00:37 +11:00
Lucas Smith c732c85082 chore: add manual dispatch to publish workflow and remove chromium builds (#2415) 2026-01-27 14:15:04 +11:00
24 changed files with 211 additions and 363 deletions
+22 -118
View File
@@ -3,6 +3,12 @@ name: Publish Docker
on:
push:
branches: ['release']
workflow_dispatch:
inputs:
tag:
description: 'Git tag to build and publish (e.g., v1.0.0)'
required: true
type: string
jobs:
build_and_publish_platform_containers:
@@ -18,6 +24,7 @@ jobs:
steps:
- uses: actions/checkout@v4
with:
ref: ${{ inputs.tag || github.ref }}
fetch-tags: true
- name: Login to DockerHub
@@ -38,8 +45,11 @@ jobs:
BUILD_PLATFORM: ${{ matrix.os == 'warp-ubuntu-latest-arm64-4x' && 'arm64' || 'amd64' }}
NEXT_PRIVATE_TELEMETRY_KEY: ${{ secrets.NEXT_PRIVATE_TELEMETRY_KEY }}
NEXT_PRIVATE_TELEMETRY_HOST: ${{ secrets.NEXT_PRIVATE_TELEMETRY_HOST }}
APP_VERSION: ${{ inputs.tag || '' }}
run: |
APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')"
if [ -z "$APP_VERSION" ]; then
APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')"
fi
GIT_SHA="$(git rev-parse HEAD)"
docker build \
@@ -65,47 +75,6 @@ jobs:
env:
BUILD_PLATFORM: ${{ matrix.os == 'warp-ubuntu-latest-arm64-4x' && 'arm64' || 'amd64' }}
- name: Build the chromium docker image
env:
BUILD_PLATFORM: ${{ matrix.os == 'warp-ubuntu-latest-arm64-4x' && 'arm64' || 'amd64' }}
run: |
APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')"
GIT_SHA="$(git rev-parse HEAD)"
docker build \
-f ./docker/Dockerfile.chromium \
--progress=plain \
--build-arg TAG="$GIT_SHA" \
-t "documenso/documenso-$BUILD_PLATFORM:latest-chromium" \
-t "documenso/documenso-$BUILD_PLATFORM:$GIT_SHA-chromium" \
-t "documenso/documenso-$BUILD_PLATFORM:$APP_VERSION-chromium" \
-t "ghcr.io/documenso/documenso-$BUILD_PLATFORM:latest-chromium" \
-t "ghcr.io/documenso/documenso-$BUILD_PLATFORM:$GIT_SHA-chromium" \
-t "ghcr.io/documenso/documenso-$BUILD_PLATFORM:$APP_VERSION-chromium" \
.
- name: Push the chromium docker image to DockerHub
env:
BUILD_PLATFORM: ${{ matrix.os == 'warp-ubuntu-latest-arm64-4x' && 'arm64' || 'amd64' }}
run: |
APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')"
GIT_SHA="$(git rev-parse HEAD)"
docker push "documenso/documenso-$BUILD_PLATFORM:latest-chromium"
docker push "documenso/documenso-$BUILD_PLATFORM:$GIT_SHA-chromium"
docker push "documenso/documenso-$BUILD_PLATFORM:$APP_VERSION-chromium" \
- name: Push the chromium docker image to GitHub Container Registry
env:
BUILD_PLATFORM: ${{ matrix.os == 'warp-ubuntu-latest-arm64-4x' && 'arm64' || 'amd64' }}
run: |
APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')"
GIT_SHA="$(git rev-parse HEAD)"
docker push "ghcr.io/documenso/documenso-$BUILD_PLATFORM:latest-chromium"
docker push "ghcr.io/documenso/documenso-$BUILD_PLATFORM:$GIT_SHA-chromium"
docker push "ghcr.io/documenso/documenso-$BUILD_PLATFORM:$APP_VERSION-chromium"
create_and_publish_manifest:
name: Create and publish manifest
runs-on: ubuntu-latest
@@ -114,6 +83,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ inputs.tag || github.ref }}
fetch-tags: true
- name: Login to DockerHub
@@ -130,8 +100,12 @@ jobs:
password: ${{ secrets.GH_TOKEN }}
- name: Create and push DockerHub manifest
env:
APP_VERSION: ${{ inputs.tag || '' }}
run: |
APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')"
if [ -z "$APP_VERSION" ]; then
APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')"
fi
GIT_SHA="$(git rev-parse HEAD)"
# Check if the version is stable (no rc or beta in the version)
@@ -166,46 +140,13 @@ jobs:
docker manifest push documenso/documenso:$GIT_SHA
docker manifest push documenso/documenso:$APP_VERSION
- name: Create and push DockerHub chromium manifest
run: |
APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')"
GIT_SHA="$(git rev-parse HEAD)"
# Check if the version is stable (no rc or beta in the version)
if [[ "$APP_VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
docker manifest create \
documenso/documenso:latest-chromium \
--amend documenso/documenso-amd64:latest-chromium \
--amend documenso/documenso-arm64:latest-chromium
docker manifest push documenso/documenso:latest-chromium
fi
if [[ "$APP_VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+-rc\.[0-9]+$ ]]; then
docker manifest create \
documenso/documenso:rc-chromium \
--amend documenso/documenso-amd64:rc-chromium \
--amend documenso/documenso-arm64:rc-chromium
docker manifest push documenso/documenso:rc-chromium
fi
docker manifest create \
documenso/documenso:$GIT_SHA-chromium \
--amend documenso/documenso-amd64:$GIT_SHA-chromium \
--amend documenso/documenso-arm64:$GIT_SHA-chromium
docker manifest create \
documenso/documenso:$APP_VERSION-chromium \
--amend documenso/documenso-amd64:$APP_VERSION-chromium \
--amend documenso/documenso-arm64:$APP_VERSION-chromium
docker manifest push documenso/documenso:$GIT_SHA-chromium
docker manifest push documenso/documenso:$APP_VERSION-chromium
- name: Create and push Github Container Registry manifest
env:
APP_VERSION: ${{ inputs.tag || '' }}
run: |
APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')"
if [ -z "$APP_VERSION" ]; then
APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')"
fi
GIT_SHA="$(git rev-parse HEAD)"
# Check if the version is stable (no rc or beta in the version)
@@ -239,40 +180,3 @@ jobs:
docker manifest push ghcr.io/documenso/documenso:$GIT_SHA
docker manifest push ghcr.io/documenso/documenso:$APP_VERSION
- name: Create and push Github Container Registry chromium manifest
run: |
APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')"
GIT_SHA="$(git rev-parse HEAD)"
# Check if the version is stable (no rc or beta in the version)
if [[ "$APP_VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
docker manifest create \
ghcr.io/documenso/documenso:latest-chromium \
--amend ghcr.io/documenso/documenso-amd64:latest-chromium \
--amend ghcr.io/documenso/documenso-arm64:latest-chromium
docker manifest push ghcr.io/documenso/documenso:latest-chromium
fi
if [[ "$APP_VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+-rc\.[0-9]+$ ]]; then
docker manifest create \
ghcr.io/documenso/documenso:rc-chromium \
--amend ghcr.io/documenso/documenso-amd64:rc-chromium \
--amend ghcr.io/documenso/documenso-arm64:rc-chromium
docker manifest push ghcr.io/documenso/documenso:rc-chromium
fi
docker manifest create \
ghcr.io/documenso/documenso:$GIT_SHA-chromium \
--amend ghcr.io/documenso/documenso-amd64:$GIT_SHA-chromium \
--amend ghcr.io/documenso/documenso-arm64:$GIT_SHA-chromium
docker manifest create \
ghcr.io/documenso/documenso:$APP_VERSION-chromium \
--amend ghcr.io/documenso/documenso-amd64:$APP_VERSION-chromium \
--amend ghcr.io/documenso/documenso-arm64:$APP_VERSION-chromium
docker manifest push ghcr.io/documenso/documenso:$GIT_SHA-chromium
docker manifest push ghcr.io/documenso/documenso:$APP_VERSION-chromium
+1 -1
View File
@@ -106,5 +106,5 @@
"vite-plugin-babel-macros": "^1.0.6",
"vite-tsconfig-paths": "^5.1.4"
},
"version": "2.5.0"
"version": "2.5.1"
}
+1 -1
View File
@@ -11,7 +11,7 @@ CERT_PATH="${NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH:-/opt/documenso/cert.p12}"
if [ -f "$CERT_PATH" ] && [ -r "$CERT_PATH" ]; then
printf "✅ Certificate file found and readable - document signing is ready!\n"
else
printf "⚠️ Certificate not found or not readable\n"
printf "⚠️ Certificate not found or not readable\n"
printf "💡 Tip: Documenso will still start, but document signing will be unavailable\n"
printf "🔧 Check: http://localhost:3000/api/certificate-status for detailed status\n"
fi
+89 -168
View File
@@ -1,12 +1,12 @@
{
"name": "@documenso/root",
"version": "2.5.0",
"version": "2.5.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@documenso/root",
"version": "2.5.0",
"version": "2.5.1",
"hasInstallScript": true,
"workspaces": [
"apps/*",
@@ -19,7 +19,6 @@
"@lingui/conf": "^5.6.0",
"@lingui/core": "^5.6.0",
"ai": "^5.0.104",
"inngest-cli": "^1.13.7",
"luxon": "^3.7.2",
"patch-package": "^8.0.1",
"posthog-node": "4.18.0",
@@ -42,6 +41,7 @@
"dotenv-cli": "^11.0.0",
"eslint": "^8.57.0",
"husky": "^9.1.7",
"inngest-cli": "^1.16.1",
"lint-staged": "^16.2.7",
"nanoid": "^5.1.6",
"nodemailer": "^7.0.10",
@@ -53,11 +53,10 @@
"prisma": "^6.19.0",
"prisma-extension-kysely": "^3.0.0",
"prisma-json-types-generator": "^3.6.2",
"prisma-kysely": "^2.2.1",
"prisma-kysely": "^2.3.0",
"rimraf": "^6.1.2",
"superjson": "^2.2.5",
"syncpack": "^14.0.0-alpha.27",
"trpc-to-openapi": "2.4.0",
"turbo": "^1.13.4",
"vite": "^7.2.4",
"vite-plugin-static-copy": "^3.1.4",
@@ -109,7 +108,7 @@
},
"apps/remix": {
"name": "@documenso/remix",
"version": "2.5.0",
"version": "2.5.1",
"dependencies": {
"@cantoo/pdf-lib": "^2.5.3",
"@documenso/api": "*",
@@ -4026,6 +4025,19 @@
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/@isaacs/fs-minipass": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
"integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
"dev": true,
"license": "ISC",
"dependencies": {
"minipass": "^7.0.4"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@jest/schemas": {
"version": "29.6.3",
"resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
@@ -17745,6 +17757,7 @@
"version": "0.5.16",
"resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz",
"integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12.0"
@@ -18988,12 +19001,13 @@
}
},
"node_modules/chownr": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
"license": "ISC",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
"integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
"dev": true,
"license": "BlueOak-1.0.0",
"engines": {
"node": ">=10"
"node": ">=18"
}
},
"node_modules/ci-info": {
@@ -23886,36 +23900,6 @@
"node": ">=14.14"
}
},
"node_modules/fs-minipass": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
"integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
"license": "ISC",
"dependencies": {
"minipass": "^3.0.0"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/fs-minipass/node_modules/minipass": {
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"license": "ISC",
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/fs-minipass/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"license": "ISC"
},
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -24650,19 +24634,19 @@
}
},
"node_modules/h3": {
"version": "1.15.1",
"resolved": "https://registry.npmjs.org/h3/-/h3-1.15.1.tgz",
"integrity": "sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==",
"version": "1.15.5",
"resolved": "https://registry.npmjs.org/h3/-/h3-1.15.5.tgz",
"integrity": "sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==",
"license": "MIT",
"dependencies": {
"cookie-es": "^1.2.2",
"crossws": "^0.3.3",
"crossws": "^0.3.5",
"defu": "^6.1.4",
"destr": "^2.0.3",
"destr": "^2.0.5",
"iron-webcrypto": "^1.2.1",
"node-mock-http": "^1.0.0",
"node-mock-http": "^1.0.4",
"radix3": "^1.1.2",
"ufo": "^1.5.4",
"ufo": "^1.6.3",
"uncrypto": "^0.1.3"
}
},
@@ -25494,16 +25478,17 @@
}
},
"node_modules/inngest-cli": {
"version": "1.13.7",
"resolved": "https://registry.npmjs.org/inngest-cli/-/inngest-cli-1.13.7.tgz",
"integrity": "sha512-u3gbUsjsTHfh5quKE3C3sw/NENFPjiWG602SNZya0Eto44U9KGVT0nHp9UoZF5qiG7X83fJqqNEjDKN4FB9JaQ==",
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/inngest-cli/-/inngest-cli-1.16.1.tgz",
"integrity": "sha512-B5Z2vgidh6HM7HVsQFZSffJpnTKB0Rm20NDL1qOjBtF8ZZgun+mJNjUYAcqOU4l8SVVEG0nfPnphsWPLZHXdsA==",
"dev": true,
"hasInstallScript": true,
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"adm-zip": "^0.5.10",
"debug": "^4.3.4",
"node-fetch": "^2.6.7",
"tar": "^6.2.1"
"tar": "^7.5.3"
},
"bin": {
"inngest": "bin/inngest",
@@ -27877,9 +27862,9 @@
}
},
"node_modules/mermaid": {
"version": "11.12.1",
"resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.12.1.tgz",
"integrity": "sha512-UlIZrRariB11TY1RtTgUWp65tphtBv4CSq7vyS2ZZ2TgoMjs2nloq+wFqxiwcxlhHUvs7DPGgMjs2aeQxz5h9g==",
"version": "11.12.2",
"resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.12.2.tgz",
"integrity": "sha512-n34QPDPEKmaeCG4WDMGy0OT6PSyxKCfy2pJgShP+Qow2KLrvWjclwbc3yXfSIf4BanqWEhQEpngWwNp/XhZt6w==",
"license": "MIT",
"dependencies": {
"@braintree/sanitize-url": "^7.1.1",
@@ -28800,54 +28785,24 @@
}
},
"node_modules/minizlib": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
"integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz",
"integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",
"dev": true,
"license": "MIT",
"dependencies": {
"minipass": "^3.0.0",
"yallist": "^4.0.0"
"minipass": "^7.1.2"
},
"engines": {
"node": ">= 8"
"node": ">= 18"
}
},
"node_modules/minizlib/node_modules/minipass": {
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"license": "ISC",
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/minizlib/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"license": "ISC"
},
"node_modules/mj-context-menu": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz",
"integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==",
"license": "Apache-2.0"
},
"node_modules/mkdirp": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"license": "MIT",
"bin": {
"mkdirp": "bin/cmd.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/mlly": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz",
@@ -29478,9 +29433,9 @@
}
},
"node_modules/node-mock-http": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.3.tgz",
"integrity": "sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==",
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.4.tgz",
"integrity": "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==",
"license": "MIT"
},
"node_modules/node-releases": {
@@ -31389,51 +31344,22 @@
}
},
"node_modules/prisma-kysely": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/prisma-kysely/-/prisma-kysely-2.2.1.tgz",
"integrity": "sha512-hxue1/ZzyBJ8qx6bSBNUjF+A+tl78PM5Sg/wIAIph9hxwdiGcWTr8JPQveva4zvA57bwRJhAJjDvdy8MK4UNuA==",
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/prisma-kysely/-/prisma-kysely-2.3.0.tgz",
"integrity": "sha512-/+VF2t2DlY+t/27hhyH5ULWxBAAsMBPgOo8Ltq7uXpBz49lUf4XuO1ff9HV0l7J3aDojG+YyczEvY0og9uRqsw==",
"license": "MIT",
"dependencies": {
"@mrleebo/prisma-ast": "^0.13.0",
"@prisma/generator-helper": "6.16.2",
"@prisma/internals": "6.16.2",
"typescript": "^5.9.2",
"zod": "^4.1.5"
"@mrleebo/prisma-ast": "^0.13.1",
"@prisma/generator-helper": "^6.2.0",
"@prisma/internals": "^6.2.0",
"typescript": "^5.9.3",
"zod": "^4.3.5"
},
"bin": {
"prisma-kysely": "dist/bin.js"
},
"peerDependencies": {
"prisma": "~6.16"
}
},
"node_modules/prisma-kysely/node_modules/@prisma/debug": {
"version": "6.16.2",
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.16.2.tgz",
"integrity": "sha512-bo4/gA/HVV6u8YK2uY6glhNsJ7r+k/i5iQ9ny/3q5bt9ijCj7WMPUwfTKPvtEgLP+/r26Z686ly11hhcLiQ8zA==",
"license": "Apache-2.0"
},
"node_modules/prisma-kysely/node_modules/@prisma/dmmf": {
"version": "6.16.2",
"resolved": "https://registry.npmjs.org/@prisma/dmmf/-/dmmf-6.16.2.tgz",
"integrity": "sha512-o9ztgdbj2KZXl6DL+oP56TTC0poTLPns9/MeU761b49E1IQ/fd0jwdov1bidlNOiwio8Nsou23xNrYE/db10aA==",
"license": "Apache-2.0"
},
"node_modules/prisma-kysely/node_modules/@prisma/generator": {
"version": "6.16.2",
"resolved": "https://registry.npmjs.org/@prisma/generator/-/generator-6.16.2.tgz",
"integrity": "sha512-7bwRmtMIgfe1rUynh1p9VlmYvEiidbRO6aBphPBS6YGEGSvNe8+QExbRpsqFlFBvIX76BhZCxuEj7ZwALMYRKQ==",
"license": "Apache-2.0"
},
"node_modules/prisma-kysely/node_modules/@prisma/generator-helper": {
"version": "6.16.2",
"resolved": "https://registry.npmjs.org/@prisma/generator-helper/-/generator-helper-6.16.2.tgz",
"integrity": "sha512-8tVnWM8ETJNrvI5CT9eKCW23+aPLNkidC+g9NJn7ghXm60Q7GGlLX5tmvn5dE8tXvs/FSX3MN7KNmNJpOr89Hw==",
"license": "Apache-2.0",
"dependencies": {
"@prisma/debug": "6.16.2",
"@prisma/dmmf": "6.16.2",
"@prisma/generator": "6.16.2"
"prisma": ">=6.2.0 <7.0.0"
}
},
"node_modules/prismjs": {
@@ -34964,36 +34890,31 @@
}
},
"node_modules/tar": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
"integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
"license": "ISC",
"version": "7.5.6",
"resolved": "https://registry.npmjs.org/tar/-/tar-7.5.6.tgz",
"integrity": "sha512-xqUeu2JAIJpXyvskvU3uvQW8PAmHrtXp2KDuMJwQqW8Sqq0CaZBAQ+dKS3RBXVhU4wC5NjAdKrmh84241gO9cA==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
"chownr": "^2.0.0",
"fs-minipass": "^2.0.0",
"minipass": "^5.0.0",
"minizlib": "^2.1.1",
"mkdirp": "^1.0.3",
"yallist": "^4.0.0"
"@isaacs/fs-minipass": "^4.0.0",
"chownr": "^3.0.0",
"minipass": "^7.1.2",
"minizlib": "^3.1.0",
"yallist": "^5.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/tar/node_modules/minipass": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
"integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
"license": "ISC",
"engines": {
"node": ">=8"
"node": ">=18"
}
},
"node_modules/tar/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"license": "ISC"
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
"integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
"dev": true,
"license": "BlueOak-1.0.0",
"engines": {
"node": ">=18"
}
},
"node_modules/teeny-request": {
"version": "10.1.0",
@@ -35270,9 +35191,9 @@
}
},
"node_modules/trpc-to-openapi": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/trpc-to-openapi/-/trpc-to-openapi-2.4.0.tgz",
"integrity": "sha512-B6xrwOC3Ab0q1BWD/QbJzK4OUpCLoT02hAzshSUXEuIZGcJZkMG/OJ4/3gd20dyr8aI+CrFirpWKRIo7JmHbMQ==",
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/trpc-to-openapi/-/trpc-to-openapi-2.1.5.tgz",
"integrity": "sha512-cX6AlrIBEK0FJe8XJ0wFCroXFqTRpF3J5v4vU5D0Tq7YI1vj8oOIY50iaJX4Gv1PZTA6Dm9DMF7R1MUtlPZ4dQ==",
"license": "MIT",
"workspaces": [
".",
@@ -35285,17 +35206,17 @@
"examples/with-nuxtjs"
],
"dependencies": {
"co-body": "6.2.0",
"h3": "1.15.1",
"co-body": "^6.1.0",
"h3": "^1.6.4",
"openapi3-ts": "4.4.0"
},
"optionalDependencies": {
"@rollup/rollup-linux-x64-gnu": "4.6.1"
},
"peerDependencies": {
"@trpc/server": "^11.1.0",
"@trpc/server": "^11.0.0-rc.648",
"zod": "^3.23.8",
"zod-openapi": "4.2.4"
"zod-openapi": "^4.1.0"
}
},
"node_modules/trpc-to-openapi/node_modules/@rollup/rollup-linux-x64-gnu": {
@@ -35729,9 +35650,9 @@
}
},
"node_modules/ufo": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz",
"integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==",
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz",
"integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==",
"license": "MIT"
},
"node_modules/uint8array-extras": {
@@ -37549,7 +37470,7 @@
"prisma": "^6.19.0",
"prisma-extension-kysely": "^3.0.0",
"prisma-json-types-generator": "^3.6.2",
"prisma-kysely": "^2.2.1",
"prisma-kysely": "^2.3.0",
"ts-pattern": "^5.9.0",
"zod": "^3.25.76",
"zod-prisma-types": "3.3.5"
@@ -37604,7 +37525,7 @@
"formidable": "^3.5.4",
"luxon": "^3.7.2",
"superjson": "^2.2.5",
"trpc-to-openapi": "2.4.0",
"trpc-to-openapi": "^2.1.5",
"ts-pattern": "^5.9.0",
"zod": "^3.25.76",
"zod-form-data": "^2.0.8",
+3 -4
View File
@@ -5,7 +5,7 @@
"apps/*",
"packages/*"
],
"version": "2.5.0",
"version": "2.5.1",
"scripts": {
"postinstall": "patch-package",
"build": "turbo run build",
@@ -61,6 +61,7 @@
"dotenv-cli": "^11.0.0",
"eslint": "^8.57.0",
"husky": "^9.1.7",
"inngest-cli": "^1.16.1",
"lint-staged": "^16.2.7",
"nanoid": "^5.1.6",
"nodemailer": "^7.0.10",
@@ -72,11 +73,10 @@
"prisma": "^6.19.0",
"prisma-extension-kysely": "^3.0.0",
"prisma-json-types-generator": "^3.6.2",
"prisma-kysely": "^2.2.1",
"prisma-kysely": "^2.3.0",
"rimraf": "^6.1.2",
"superjson": "^2.2.5",
"syncpack": "^14.0.0-alpha.27",
"trpc-to-openapi": "2.4.0",
"turbo": "^1.13.4",
"vite": "^7.2.4",
"vite-plugin-static-copy": "^3.1.4",
@@ -90,7 +90,6 @@
"@lingui/conf": "^5.6.0",
"@lingui/core": "^5.6.0",
"ai": "^5.0.104",
"inngest-cli": "^1.13.7",
"luxon": "^3.7.2",
"patch-package": "^8.0.1",
"posthog-node": "4.18.0",
+1
View File
@@ -796,6 +796,7 @@ export const ApiContractV1Implementation = tsr.router(ApiContractV1, {
title: body.title,
},
attachments: body.attachments,
formValues: body.formValues,
requestMetadata: metadata,
});
@@ -30,11 +30,17 @@ type HandleOAuthAuthorizeUrlOptions = {
prompt?: 'none' | 'login' | 'consent' | 'select_account';
};
const isOidcPrompt = (value: unknown): value is HandleOAuthAuthorizeUrlOptions['prompt'] => {
return value === 'none' || value === 'login' || value === 'consent' || value === 'select_account';
};
const oauthCookieMaxAge = 60 * 10; // 10 minutes.
export const handleOAuthAuthorizeUrl = async (options: HandleOAuthAuthorizeUrlOptions) => {
const { c, clientOptions, redirectPath } = options;
let prompt = options.prompt ?? 'login';
if (!clientOptions.clientId || !clientOptions.clientSecret) {
throw new AppError(AppErrorCode.NOT_SETUP);
}
@@ -63,12 +69,12 @@ export const handleOAuthAuthorizeUrl = async (options: HandleOAuthAuthorizeUrlOp
);
// Pass the prompt to the authorization endpoint.
if (process.env.NEXT_PRIVATE_OIDC_PROMPT !== '') {
const prompt = process.env.NEXT_PRIVATE_OIDC_PROMPT ?? 'login';
url.searchParams.append('prompt', prompt);
if (process.env.NEXT_PRIVATE_OIDC_PROMPT && isOidcPrompt(process.env.NEXT_PRIVATE_OIDC_PROMPT)) {
prompt = process.env.NEXT_PRIVATE_OIDC_PROMPT;
}
url.searchParams.set('prompt', prompt);
setCookie(c, `${clientOptions.id}_oauth_state`, state, {
...sessionCookieOptions,
sameSite: 'lax',
+1 -1
View File
@@ -70,7 +70,7 @@ export const getServerLimits = async ({
}
// Early return for users with an expired subscription.
if (subscription && subscription.status !== SubscriptionStatus.ACTIVE) {
if (subscription && subscription.status === SubscriptionStatus.INACTIVE) {
return {
quota: INACTIVE_PLAN_LIMITS,
remaining: INACTIVE_PLAN_LIMITS,
@@ -79,6 +79,7 @@ export const findTemplates = async ({
},
},
skip: Math.max(page - 1, 0) * perPage,
take: perPage,
orderBy: {
createdAt: 'desc',
},
+7 -6
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: de\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-01-13 02:39\n"
"PO-Revision-Date: 2026-01-13 10:04\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -1951,7 +1951,7 @@ msgstr "Audit-Protokoll"
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
msgid "Audit Log Details"
msgstr ""
msgstr "Audit-Log-Details"
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
@@ -3115,7 +3115,7 @@ msgstr "Standardorganisation Rolle für neue Benutzer"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Recipients"
msgstr ""
msgstr "Standardempfänger"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signature Settings"
@@ -7136,7 +7136,7 @@ msgstr "Empfängermetriken"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Recipients that will be automatically added to new documents."
msgstr ""
msgstr "Empfänger, die neuen Dokumenten automatisch hinzugefügt werden."
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "Recipients will be able to sign the document once sent"
@@ -7758,7 +7758,7 @@ msgstr "Passkey auswählen"
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
msgid "Select recipients"
msgstr ""
msgstr "Empfänger auswählen"
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -10396,7 +10396,7 @@ msgstr "Einladungen ansehen"
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
msgid "View JSON"
msgstr ""
msgstr "JSON anzeigen"
#: apps/remix/app/components/general/template/template-page-view-recent-activity.tsx
msgid "View more"
@@ -11754,3 +11754,4 @@ msgstr "Ihr Verifizierungscode:"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "your-domain.com another-domain.com"
msgstr "your-domain.com another-domain.com"
+7 -6
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: es\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-01-13 02:39\n"
"PO-Revision-Date: 2026-01-13 10:04\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -1951,7 +1951,7 @@ msgstr "Registro de Auditoría"
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
msgid "Audit Log Details"
msgstr ""
msgstr "Detalles del registro de auditoría"
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
@@ -3115,7 +3115,7 @@ msgstr "Rol de organización predeterminado para nuevos usuarios"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Recipients"
msgstr ""
msgstr "Destinatarios predeterminados"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signature Settings"
@@ -7136,7 +7136,7 @@ msgstr "Métricas de destinatarios"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Recipients that will be automatically added to new documents."
msgstr ""
msgstr "Destinatarios que se agregarán automáticamente a los nuevos documentos."
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "Recipients will be able to sign the document once sent"
@@ -7758,7 +7758,7 @@ msgstr "Seleccionar clave de acceso"
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
msgid "Select recipients"
msgstr ""
msgstr "Seleccionar destinatarios"
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -10396,7 +10396,7 @@ msgstr "Ver invitaciones"
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
msgid "View JSON"
msgstr ""
msgstr "Ver JSON"
#: apps/remix/app/components/general/template/template-page-view-recent-activity.tsx
msgid "View more"
@@ -11754,3 +11754,4 @@ msgstr "Su código de verificación:"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "your-domain.com another-domain.com"
msgstr "su-dominio.com otro-dominio.com"
+7 -6
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: fr\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-01-13 02:39\n"
"PO-Revision-Date: 2026-01-13 10:04\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
@@ -1951,7 +1951,7 @@ msgstr "Journal d'audit"
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
msgid "Audit Log Details"
msgstr ""
msgstr "Détails du journal daudit"
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
@@ -3115,7 +3115,7 @@ msgstr "Rôle par défaut de l'organisation pour les nouveaux utilisateurs"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Recipients"
msgstr ""
msgstr "Destinataires par défaut"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signature Settings"
@@ -7136,7 +7136,7 @@ msgstr "Métriques des destinataires"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Recipients that will be automatically added to new documents."
msgstr ""
msgstr "Les destinataires qui seront automatiquement ajoutés aux nouveaux documents."
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "Recipients will be able to sign the document once sent"
@@ -7758,7 +7758,7 @@ msgstr "Sélectionner la clé d'authentification"
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
msgid "Select recipients"
msgstr ""
msgstr "Sélectionner des destinataires"
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -10396,7 +10396,7 @@ msgstr "Voir les invitations"
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
msgid "View JSON"
msgstr ""
msgstr "Afficher le JSON"
#: apps/remix/app/components/general/template/template-page-view-recent-activity.tsx
msgid "View more"
@@ -11754,3 +11754,4 @@ msgstr "Votre code de vérification :"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "your-domain.com another-domain.com"
msgstr "your-domain.com another-domain.com"
+7 -6
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: it\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-01-13 02:39\n"
"PO-Revision-Date: 2026-01-13 10:04\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -1951,7 +1951,7 @@ msgstr "Registro di controllo"
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
msgid "Audit Log Details"
msgstr ""
msgstr "Dettagli registro di controllo"
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
@@ -3115,7 +3115,7 @@ msgstr "Ruolo dell'organizzazione predefinito per nuovi utenti"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Recipients"
msgstr ""
msgstr "Destinatari predefiniti"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signature Settings"
@@ -7136,7 +7136,7 @@ msgstr "Metriche dei destinatari"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Recipients that will be automatically added to new documents."
msgstr ""
msgstr "Destinatari che verranno aggiunti automaticamente ai nuovi documenti."
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "Recipients will be able to sign the document once sent"
@@ -7758,7 +7758,7 @@ msgstr "Seleziona una chiave di accesso"
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
msgid "Select recipients"
msgstr ""
msgstr "Seleziona destinatari"
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -10396,7 +10396,7 @@ msgstr "Visualizza inviti"
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
msgid "View JSON"
msgstr ""
msgstr "Visualizza JSON"
#: apps/remix/app/components/general/template/template-page-view-recent-activity.tsx
msgid "View more"
@@ -11754,3 +11754,4 @@ msgstr "Il tuo codice di verifica:"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "your-domain.com another-domain.com"
msgstr "tuo-dominio.com altro-dominio.com"
+7 -6
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ja\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-01-13 02:39\n"
"PO-Revision-Date: 2026-01-13 10:04\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -1951,7 +1951,7 @@ msgstr "監査ログ"
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
msgid "Audit Log Details"
msgstr ""
msgstr "監査ログの詳細"
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
@@ -3115,7 +3115,7 @@ msgstr "新規ユーザーの既定の組織ロール"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Recipients"
msgstr ""
msgstr "デフォルトの受信者"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signature Settings"
@@ -7136,7 +7136,7 @@ msgstr "受信者は文書のコピーを保持したままです"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Recipients that will be automatically added to new documents."
msgstr ""
msgstr "新しいドキュメントに自動的に追加される受信者です。"
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "Recipients will be able to sign the document once sent"
@@ -7758,7 +7758,7 @@ msgstr "パスキーを選択"
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
msgid "Select recipients"
msgstr ""
msgstr "受信者を選択"
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -10396,7 +10396,7 @@ msgstr "招待を表示"
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
msgid "View JSON"
msgstr ""
msgstr "JSON を表示"
#: apps/remix/app/components/general/template/template-page-view-recent-activity.tsx
msgid "View more"
@@ -11754,3 +11754,4 @@ msgstr "認証コード:"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "your-domain.com another-domain.com"
msgstr "your-domain.com another-domain.com"
+7 -6
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ko\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-01-13 02:39\n"
"PO-Revision-Date: 2026-01-13 10:04\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -1951,7 +1951,7 @@ msgstr "감사 로그"
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
msgid "Audit Log Details"
msgstr ""
msgstr "감사 로그 세부 정보"
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
@@ -3115,7 +3115,7 @@ msgstr "새 사용자 기본 조직 역할"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Recipients"
msgstr ""
msgstr "기본 수신인들"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signature Settings"
@@ -7136,7 +7136,7 @@ msgstr "수신자 지표"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Recipients that will be automatically added to new documents."
msgstr ""
msgstr "새 문서에 자동으로 추가될 수신인들입니다."
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "Recipients will be able to sign the document once sent"
@@ -7758,7 +7758,7 @@ msgstr "패스키 선택"
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
msgid "Select recipients"
msgstr ""
msgstr "수신인 선택"
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -10396,7 +10396,7 @@ msgstr "초대 보기"
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
msgid "View JSON"
msgstr ""
msgstr "JSON 보기"
#: apps/remix/app/components/general/template/template-page-view-recent-activity.tsx
msgid "View more"
@@ -11754,3 +11754,4 @@ msgstr "인증 코드:"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "your-domain.com another-domain.com"
msgstr "your-domain.com another-domain.com"
+7 -6
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: nl\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-01-13 02:39\n"
"PO-Revision-Date: 2026-01-13 10:04\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -1951,7 +1951,7 @@ msgstr "Auditlog"
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
msgid "Audit Log Details"
msgstr ""
msgstr "Details van auditlogboek"
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
@@ -3115,7 +3115,7 @@ msgstr "Standaard organisatierol voor nieuwe gebruikers"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Recipients"
msgstr ""
msgstr "Standaardontvangers"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signature Settings"
@@ -7136,7 +7136,7 @@ msgstr "Ontvangerstatistieken"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Recipients that will be automatically added to new documents."
msgstr ""
msgstr "Ontvangers die automatisch aan nieuwe documenten worden toegevoegd."
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "Recipients will be able to sign the document once sent"
@@ -7758,7 +7758,7 @@ msgstr "Passkey selecteren"
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
msgid "Select recipients"
msgstr ""
msgstr "Ontvangers selecteren"
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -10396,7 +10396,7 @@ msgstr "Uitnodigingen bekijken"
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
msgid "View JSON"
msgstr ""
msgstr "JSON bekijken"
#: apps/remix/app/components/general/template/template-page-view-recent-activity.tsx
msgid "View more"
@@ -11754,3 +11754,4 @@ msgstr "Uw verificatiecode:"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "your-domain.com another-domain.com"
msgstr "your-domain.com another-domain.com"
+12 -11
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: pl\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-01-13 02:39\n"
"PO-Revision-Date: 2026-01-15 04:18\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
@@ -1951,7 +1951,7 @@ msgstr "Dziennik logów"
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
msgid "Audit Log Details"
msgstr ""
msgstr "Szczegóły dziennika logu"
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
@@ -3115,7 +3115,7 @@ msgstr "Domyślna rola w organizacji dla nowych użytkowników"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Recipients"
msgstr ""
msgstr "Domyślni odbiorcy"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signature Settings"
@@ -4343,7 +4343,7 @@ msgstr "Załączniki"
#: apps/remix/app/components/dialogs/sign-field-number-dialog.tsx
#: apps/remix/app/components/dialogs/sign-field-text-dialog.tsx
msgid "Enter"
msgstr "Wpisz lub wprowadź wartość"
msgstr "Wpisz"
#: apps/remix/app/components/dialogs/folder-create-dialog.tsx
msgid "Enter a name for your new folder. Folders help you organise your items."
@@ -4363,7 +4363,7 @@ msgstr "Wpisz inicjały"
#: apps/remix/app/components/dialogs/sign-field-name-dialog.tsx
msgid "Enter Name"
msgstr "Wpisz imię i nazwisko"
msgstr "Wpisz nazwę"
#: apps/remix/app/components/dialogs/sign-field-number-dialog.tsx
msgid "Enter Number"
@@ -6761,15 +6761,15 @@ msgstr "Wpisz wartość"
#: apps/remix/app/components/dialogs/sign-field-email-dialog.tsx
msgid "Please enter your email address"
msgstr "Wpisz swój adres e-mail"
msgstr "Wpisz adres e-mail"
#: apps/remix/app/components/dialogs/sign-field-name-dialog.tsx
msgid "Please enter your full name"
msgstr "Wpisz swoje pełne imię i nazwisko"
msgstr "Wpisz nazwę"
#: apps/remix/app/components/dialogs/sign-field-initials-dialog.tsx
msgid "Please enter your initials"
msgstr "Wprowadź swoje inicjały"
msgstr "Wpisz inicjały"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
msgid "Please mark as viewed to complete"
@@ -7136,7 +7136,7 @@ msgstr "Metryki odbiorców"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Recipients that will be automatically added to new documents."
msgstr ""
msgstr "Odbiorcy, którzy będą automatycznie dodawani do nowych dokumentów."
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "Recipients will be able to sign the document once sent"
@@ -7758,7 +7758,7 @@ msgstr "Wybierz klucz dostępu"
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
msgid "Select recipients"
msgstr ""
msgstr "Wybierz odbiorców"
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -10396,7 +10396,7 @@ msgstr "Wyświetl zaproszenia"
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
msgid "View JSON"
msgstr ""
msgstr "Zobacz JSON"
#: apps/remix/app/components/general/template/template-page-view-recent-activity.tsx
msgid "View more"
@@ -11754,3 +11754,4 @@ msgstr "Twój kod weryfikacyjny:"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "your-domain.com another-domain.com"
msgstr "your-domain.com another-domain.com"
+7 -6
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: zh\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-01-13 02:39\n"
"PO-Revision-Date: 2026-01-13 10:04\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -1951,7 +1951,7 @@ msgstr "审计日志"
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
msgid "Audit Log Details"
msgstr ""
msgstr "审计日志详情"
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
@@ -3115,7 +3115,7 @@ msgstr "新用户的默认组织角色"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Recipients"
msgstr ""
msgstr "默认收件人"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signature Settings"
@@ -7136,7 +7136,7 @@ msgstr "收件人仍将保留其文档副本"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Recipients that will be automatically added to new documents."
msgstr ""
msgstr "将自动添加到新文档中的收件人。"
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "Recipients will be able to sign the document once sent"
@@ -7758,7 +7758,7 @@ msgstr "选择通行密钥"
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
msgid "Select recipients"
msgstr ""
msgstr "选择收件人"
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -10396,7 +10396,7 @@ msgstr "查看邀请"
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
msgid "View JSON"
msgstr ""
msgstr "查看 JSON"
#: apps/remix/app/components/general/template/template-page-view-recent-activity.tsx
msgid "View more"
@@ -11754,3 +11754,4 @@ msgstr "您的验证码:"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "your-domain.com another-domain.com"
msgstr "your-domain.com another-domain.com"
+2 -2
View File
@@ -26,7 +26,7 @@
"nanoid": "^5.1.6",
"prisma": "^6.19.0",
"prisma-extension-kysely": "^3.0.0",
"prisma-kysely": "^2.2.1",
"prisma-kysely": "^2.3.0",
"prisma-json-types-generator": "^3.6.2",
"ts-pattern": "^5.9.0",
"zod": "^3.25.76",
@@ -38,4 +38,4 @@
"tsx": "^4.20.6",
"typescript": "5.6.2"
}
}
}
+1 -1
View File
@@ -21,7 +21,7 @@
"formidable": "^3.5.4",
"luxon": "^3.7.2",
"superjson": "^2.2.5",
"trpc-to-openapi": "2.4.0",
"trpc-to-openapi": "^2.1.5",
"ts-pattern": "^5.9.0",
"zod": "^3.25.76",
"zod-form-data": "^2.0.8",
@@ -38,6 +38,7 @@ export const createDocumentTemporaryRoute = authenticatedProcedure
meta,
folderId,
attachments,
formValues,
} = input;
const { remaining } = await getServerLimits({ userId: user.id, teamId });
@@ -68,6 +69,7 @@ export const createDocumentTemporaryRoute = authenticatedProcedure
title,
externalId,
visibility,
formValues,
globalAccessAuth,
globalActionAuth,
recipients: (recipients || []).map((recipient) => ({
@@ -27,6 +27,7 @@ import {
/**
* Temporariy endpoint for V2 Beta until we allow passthrough documents on create.
* @deprecated
*/
export const createDocumentTemporaryMeta: TrpcRouteMeta = {
openapi: {
@@ -36,6 +37,7 @@ export const createDocumentTemporaryMeta: TrpcRouteMeta = {
description:
'You will need to upload the PDF to the provided URL returned. Note: Once V2 API is released, this will be removed since we will allow direct uploads, instead of using an upload URL.',
tags: ['Document'],
deprecated: true,
},
};
@@ -78,6 +78,7 @@ export const createDocumentRoute = authenticatedProcedure
visibility,
globalAccessAuth,
globalActionAuth,
formValues,
recipients: (recipients || []).map((recipient) => ({
...recipient,
fields: (recipient.fields || []).map((field) => ({
@@ -90,10 +90,12 @@ export const profileRouter = router({
const parsedTeamId = teamId ? Number(teamId) : null;
if (Number.isNaN(parsedTeamId)) {
throw new AppError(AppErrorCode.INVALID_BODY, {
message: 'Invalid team ID provided',
});
if (typeof parsedTeamId === 'number') {
if (Number.isNaN(parsedTeamId) || parsedTeamId <= 0) {
throw new AppError(AppErrorCode.INVALID_BODY, {
message: 'Invalid team ID provided',
});
}
}
return await submitSupportTicket({