Skip to content
Open
Show file tree
Hide file tree
Changes from 82 commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
9b7745c
hide resend on archived
omohokcoj Feb 11, 2026
8f6f418
fix font size
omohokcoj Feb 12, 2026
7a2c374
update favicon
omohokcoj Feb 12, 2026
9377766
fix url download
omohokcoj Feb 14, 2026
680ab9d
raise invalid param
omohokcoj Feb 14, 2026
34ea639
escape wildcard query
omohokcoj Feb 14, 2026
ca0acb3
use url for open modal
omohokcoj Feb 14, 2026
ed8c313
timestamp controller multitenant
omohokcoj Feb 14, 2026
fe6baba
fix erb lint
omohokcoj Feb 14, 2026
347be01
refactor 2fa
omohokcoj Feb 14, 2026
40052a2
use query_params
omohokcoj Feb 14, 2026
871ef6d
add fetch options
omohokcoj Feb 14, 2026
12c5b90
use cancan
omohokcoj Feb 14, 2026
61c5ee2
hide form credentials
omohokcoj Feb 15, 2026
bdd33c7
fix spec
omohokcoj Feb 15, 2026
a999109
add port check
omohokcoj Feb 15, 2026
3aa2031
Add Google OAuth login and GAR CI/CD pipeline
dnplkndll Feb 15, 2026
d25a5d2
Set kencove branch as stable GAR build trigger
dnplkndll Feb 15, 2026
c068307
Remove Pro feature gates, subscription code, and Rollbar telemetry
dnplkndll Feb 15, 2026
4ab0a1d
Fix Rubocop offenses: redundant freeze and modifier if style
dnplkndll Feb 15, 2026
c36f27b
Add company logo URL support for signing forms
dnplkndll Feb 15, 2026
75316d8
fix draw custom field
omohokcoj Feb 15, 2026
422bfa8
Fix CI failures: conditional omniauth routes and erblint offenses
dnplkndll Feb 15, 2026
fa6d889
Merge pull request #2 from kencove/feature/remove-pro-gates-and-telem…
dnplkndll Feb 15, 2026
f915755
Remove rolling latest tag from GAR Docker builds
dnplkndll Feb 15, 2026
8015a05
Restore latest tag alongside short SHA for GAR Docker builds
dnplkndll Feb 15, 2026
576ed9a
Add HMAC-SHA256 webhook signature verification
dnplkndll Feb 15, 2026
fe500ca
Fix Rubocop offenses in webhook signing code
dnplkndll Feb 15, 2026
6587567
Rebrand to Kencove eSign with Kencove logo and colors
dnplkndll Feb 15, 2026
f8c3be5
Add Twilio SMS integration for submitter invitations
dnplkndll Feb 15, 2026
aa77e3a
adjust port check
omohokcoj Feb 16, 2026
3b396f8
fix redirect
omohokcoj Feb 16, 2026
33ca930
Merge from docusealco/wip
AlexBTurchyn Feb 16, 2026
2c736a0
validate readonly field
omohokcoj Feb 17, 2026
43fbc42
fix reason field
omohokcoj Feb 17, 2026
848f01e
add spec
omohokcoj Feb 17, 2026
e48652f
fix rubocop
omohokcoj Feb 17, 2026
118f4a2
detailed time format
omohokcoj Feb 17, 2026
1b41af7
update
omohokcoj Feb 17, 2026
1d2394e
size limit
omohokcoj Feb 19, 2026
739e2ab
vips size limit
omohokcoj Feb 19, 2026
ac8a19e
build: add arm64 to multi-arch Docker image
dnplkndll Feb 19, 2026
b63675b
feat: auto-create users on Google login + switch to Cloud Build
dnplkndll Feb 19, 2026
fbd7cba
build: add AR layer cache + increase timeout to 2h
dnplkndll Feb 19, 2026
825322d
adjust for custom domain
omohokcoj Feb 19, 2026
65c275a
rename
omohokcoj Feb 20, 2026
ba84741
invite party via field
omohokcoj Feb 20, 2026
fb5e13e
adjust recipients form
omohokcoj Feb 20, 2026
b6635fc
change user only when root
omohokcoj Feb 20, 2026
f1d146e
fix typos
omohokcoj Feb 20, 2026
231fff5
canvas blocked message
omohokcoj Feb 21, 2026
5073f2e
adjsut sign yourself
omohokcoj Feb 21, 2026
451f834
fix cell render
omohokcoj Feb 21, 2026
39cc82c
add markdown editor
AlexBTurchyn Feb 21, 2026
e9c8e4d
adjust editor
omohokcoj Feb 21, 2026
3d0c7f1
markdown in preferences
omohokcoj Feb 21, 2026
47822ec
remove autolink
omohokcoj Feb 21, 2026
fc6baa1
adjust autolink
omohokcoj Feb 21, 2026
845782a
link input width
omohokcoj Feb 21, 2026
e6e6403
use br for email content
omohokcoj Feb 21, 2026
746757d
rtl in editor
omohokcoj Feb 21, 2026
e5b63ea
fix multi party email form
omohokcoj Feb 21, 2026
262118e
update deps
omohokcoj Feb 22, 2026
8c5298e
refactor link tooltip
omohokcoj Feb 22, 2026
0c37ad1
add variables key
omohokcoj Feb 22, 2026
04264fe
fix reason field
omohokcoj Feb 22, 2026
c4b0074
radio select in formula
omohokcoj Feb 22, 2026
cbffb1e
cloudflare r2 fix
omohokcoj Feb 22, 2026
246ccfb
fix highlight
omohokcoj Feb 23, 2026
13fa87c
Merge from docusealco/wip
AlexBTurchyn Feb 23, 2026
a14f46d
Merge upstream docuseal v2.3.5 into kencove branch
dnplkndll Feb 27, 2026
a148f47
Add SMS error handling, retry logic, and Redis-backed rate limiting
dnplkndll Feb 28, 2026
3609629
Unlock conditions and formula UI in DocuSeal CE
dnplkndll Feb 28, 2026
7e21cf3
Address CodeRabbit review: add Faraday::ConnectionFailed and Redis fa…
dnplkndll Feb 28, 2026
2a2cea3
Rebrand to Kencove eSign: use dynamic product name and add REMOVE_BRA…
dnplkndll Feb 28, 2026
8f724d1
Fix rubocop style issues in SMS specs
dnplkndll Feb 28, 2026
acc189b
Fix toggle_attribute disabled check for checkbox inputs
dnplkndll Feb 28, 2026
2f594a8
Merge pull request #5 from kencove/unlock-conditions-ui-ce
dnplkndll Feb 28, 2026
036a514
Merge pull request #4 from kencove/sms-error-handling-and-redis-rate-…
dnplkndll Feb 28, 2026
3df856d
Make PRODUCT_NAME configurable via env var
dnplkndll Feb 28, 2026
6f556f6
Merge pull request #6 from kencove/kencove-branding
dnplkndll Feb 28, 2026
42ec251
Use dynamic product name in email From and landing page
dnplkndll Feb 28, 2026
aa3319c
Add redis gem to Gemfile for RedisCacheStore support
dnplkndll Feb 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions .github/workflows/docker-gar.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Build and Push to Google Artifact Registry

on:
push:
tags:
- "*.*.*"
Comment on lines +5 to +6
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Overly broad tag glob may fire on non-semver tags.

The pattern *.*.* matches any tag with two dots (e.g., release.candidate.1, hotfix.pr.42). Restrict to semver if that is the intent:

🛠️ Tighter semver pattern
     tags:
-      - "*.*.*"
+      - "v[0-9]+.[0-9]+.[0-9]+"

Or use the semver filter from docker/metadata-action and drop this restriction entirely.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
tags:
- "*.*.*"
tags:
- "v[0-9]+.[0-9]+.[0-9]+"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/docker-gar.yml around lines 5 - 6, The tags glob "*.*.*"
is too broad and matches non-semver tags; update the tags entry so it only
matches semantic versions (for example replace "*.*.*" with a stricter pattern
like "v?\\d+\\.\\d+\\.\\d*(?:[-+].*)?" or explicit "v?\\d+\\.\\d+\\.\\d"
depending on your allowed variants), or remove the manual filter and use the
docker/metadata-action semver filter instead so the tags: field only triggers
for valid semver releases.

branches:
- kencove

permissions:
contents: read
id-token: write

jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 5

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Authenticate to Google Cloud
id: auth
uses: google-github-actions/auth@v2
with:
workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}
service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}

- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@v2

- name: Determine image tag
id: tag
run: |
if [[ "${{ github.ref_type }}" == "tag" ]]; then
echo "img_tag=${{ github.ref_name }}" >> "$GITHUB_OUTPUT"
else
echo "img_tag=$(echo ${{ github.sha }} | cut -c1-8)" >> "$GITHUB_OUTPUT"
fi

- name: Trigger Cloud Build
run: |
gcloud builds submit \
--config=cloudbuild.yaml \
--project=kencove-prod \
--substitutions=_IMG_TAG=${{ steps.tag.outputs.img_tag }} \
--async
Comment on lines +42 to +48
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

--async silences build failures; unquoted substitution value can break parsing.

Two distinct issues in this block:

  1. No build-failure signal (Line 44–48): --async causes gcloud builds submit to return immediately after queuing the job. If the Cloud Build run fails (e.g., Buildx error, registry push failure, OOM on the worker), the GitHub Actions job exits with ✅, the commit gets a green check, and the broken image is silently never produced. Consider removing --async and letting the job block until the build completes, or poll for the result. The timeout-minutes: 5 on the job is consistent with --async (submission itself is fast), but that timeout would need to be increased (or removed) if the job blocks.

  2. Unquoted substitution value (Line 47): --substitutions uses comma-separated key=value pairs — a value containing a comma causes a parse error. The expression ${{ steps.tag.outputs.img_tag }} is interpolated by GitHub Actions before the shell runs, so any special character in the resolved value (comma, space, equals) will corrupt the gcloud command.

🛠️ Proposed fix — block on result and quote the substitution
     - name: Trigger Cloud Build
+      timeout-minutes: 120
       run: |
         gcloud builds submit \
           --config=cloudbuild.yaml \
           --project=kencove-prod \
-          --substitutions=_IMG_TAG=${{ steps.tag.outputs.img_tag }} \
-          --async
+          --substitutions="_IMG_TAG=${{ steps.tag.outputs.img_tag }}"
-
-    timeout-minutes: 5
+    timeout-minutes: 130

If keeping async is a deliberate choice (e.g., to avoid long-running Actions minutes), at minimum add the quote and document that build status must be monitored in Cloud Build console.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/docker-gar.yml around lines 42 - 48, The gcloud invocation
uses --async (in gcloud builds submit) which hides build failures and also
passes an unquoted --substitutions value using the GitHub Actions expression
steps.tag.outputs.img_tag that can break gcloud parsing; remove --async (or
replace with logic that waits/polls for the build result) so the workflow blocks
and fails on build errors, and wrap the substitutions value in quotes (i.e.
quote the --substitutions argument) so the expanded ${ {
steps.tag.outputs.img_tag } } is passed safely even if it contains
commas/spaces/equals.

9 changes: 8 additions & 1 deletion .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ RSpec/AnyInstance:
Enabled: false

Metrics/BlockNesting:
Max: 5
Max: 6

Rails/I18nLocaleTexts:
Enabled: false
Expand All @@ -106,3 +106,10 @@ Rails/StrongParametersExpect:

Rails/RedirectBackOrTo:
Enabled: false

Rails/UnknownEnv:
Environments:
- development
- test
- production
- local
Comment on lines +110 to +115
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify that a local environment configuration exists
echo "=== Looking for local.rb in config/environments ==="
fd -t f 'local.rb' config/environments 2>/dev/null || echo "No local.rb found"

echo ""
echo "=== Checking for references to Rails.env.local or RAILS_ENV=local ==="
rg -n 'Rails\.env\.local|RAILS_ENV.*local' --type ruby 2>/dev/null || echo "No matches found"

echo ""
echo "=== Checking for any environment configuration references ==="
rg -n 'config/environments' --type ruby | head -20

echo ""
echo "=== Looking at the config/environments directory structure ==="
ls -la config/environments/ 2>/dev/null || echo "config/environments directory not found"

Repository: kencove/docuseal

Length of output: 949


Add config/environments/local.rb or document the local environment configuration.

The local environment is actively used in the codebase (found in 5 files including lib/send_webhook_request.rb, lib/action_mailer_events_observer.rb, and app/controllers/templates_uploads_controller.rb), but there is no corresponding config/environments/local.rb file. Create this file with appropriate Rails environment configuration for the local environment, or document why explicit configuration is not needed.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.rubocop.yml around lines 110 - 115, RuboCop flags a missing Rails
environment "local" listed under Rails/UnknownEnv; add a new
config/environments/local.rb with the same baseline settings used by
development/production (e.g., class ApplicationName::Application.configure block
copying relevant development config) so the "local" environment behaves as
expected, or alternatively add a short documented justification in the project
README explaining why an explicit local environment file is unnecessary and
reference the files that rely on it (lib/send_webhook_request.rb,
lib/action_mailer_events_observer.rb,
app/controllers/templates_uploads_controller.rb) and the RuboCop entry to avoid
confusion.

1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ ENV RAILS_ENV=production
ENV BUNDLE_WITHOUT="development:test"
ENV LD_PRELOAD=/lib/libgcompat.so.0
ENV OPENSSL_CONF=/etc/openssl_legacy.cnf
ENV VIPS_MAX_COORD=10000

WORKDIR /app

Expand Down
3 changes: 2 additions & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ gem 'jwt', require: false
gem 'lograge'
gem 'numo-narray-alt', require: false
gem 'oj'
gem 'omniauth-google-oauth2'
gem 'omniauth-rails_csrf_protection'
gem 'onnxruntime', require: false
gem 'pagy'
gem 'pg', require: false
Expand All @@ -33,7 +35,6 @@ gem 'pretender'
gem 'puma', require: false
gem 'rack'
gem 'rails'
gem 'rails_autolink'
gem 'rails-i18n'
gem 'rotp'
gem 'rouge', require: false
Expand Down
Loading
Loading