mirror of https://github.com/docusealco/docuseal
Renames the product to WaboSign across UI, mailers, locales, assets, and internal Ruby module. Keeps the upstream DocuSeal attribution required by AGPLv3 §7(b) in the powered-by footer, email attribution, README, and a new NOTICE file. Migration renames the AATL cert identifier in encrypted configs from docuseal_aatl to wabosign_aatl. Removes multitenant-gated Pro upsell UI (Plans/Console/Upgrade links, SMS/SSO/bulk-send/logo placeholders, reminder-duration restriction, the "DocuSeal Pro" email-attribution toggle, conditions/formula/payment pricing links) so every shipped feature is reachable on a self-hosted deployment. Multitenant routing logic is preserved. Drops Discord, Twitter, and ChatGPT/AI-assistant chrome. Embedding modal keeps the upstream <docuseal-form> / @docuseal/* SDK contract so existing embedded forms continue to work; documented in NOTICE. REBRANDING.md captures the change inventory for future maintainers. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>pull/687/head
parent
528a1216f8
commit
2796ddf424
@ -1,5 +1,17 @@
|
|||||||
Additional Terms
|
Additional Terms
|
||||||
|
|
||||||
In accordance with Section 7(b) of the GNU Affero General Public License,
|
In accordance with Section 7(b) of the GNU Affero General Public License,
|
||||||
a covered work must retain the original DocuSeal attribution in interactive
|
covered works derived from this software must retain attribution to:
|
||||||
user interfaces.
|
|
||||||
|
1. WaboSign — https://sign.wabo.cc — https://github.com/wabolabs/wabosign
|
||||||
|
2. DocuSeal (the upstream from which WaboSign is forked) —
|
||||||
|
https://github.com/docusealco/docuseal
|
||||||
|
|
||||||
|
Attribution must remain visible in interactive user interfaces (e.g. footer,
|
||||||
|
About page, generated emails, audit-trail PDFs, signing-completion screens).
|
||||||
|
|
||||||
|
WaboSign itself complies with this requirement by displaying both the
|
||||||
|
WaboSign and DocuSeal credits in the "Powered by" footer (see
|
||||||
|
app/views/shared/_powered_by.html.erb), in email attributions (see
|
||||||
|
app/views/shared/_email_attribution.html.erb), in generated PDF audit
|
||||||
|
trails, and in this repository's README and NOTICE files.
|
||||||
|
|||||||
@ -0,0 +1,39 @@
|
|||||||
|
WaboSign
|
||||||
|
Copyright (c) 2026 the WaboSign authors
|
||||||
|
|
||||||
|
This product includes software originally developed as DocuSeal:
|
||||||
|
|
||||||
|
DocuSeal
|
||||||
|
Copyright (c) 2023-2026 DocuSeal LLC
|
||||||
|
https://github.com/docusealco/docuseal
|
||||||
|
|
||||||
|
DocuSeal is licensed under the GNU Affero General Public License v3.0 with
|
||||||
|
§7(b) Additional Terms (see LICENSE and LICENSE_ADDITIONAL_TERMS). WaboSign
|
||||||
|
is a fork of DocuSeal and is distributed under the same terms.
|
||||||
|
|
||||||
|
Modifications made for the WaboSign fork include (non-exhaustive):
|
||||||
|
|
||||||
|
- Product rebrand (name, logo, favicons, mailer "from", URLs, i18n strings)
|
||||||
|
- Removal of multitenant-/Pro-edition feature gates so the open-source
|
||||||
|
edition exposes all shipped capabilities out of the box
|
||||||
|
- Internal Ruby module renamed from `Docuseal` to `Wabosign`
|
||||||
|
- AATL certificate identifier renamed `docuseal_aatl` → `wabosign_aatl`
|
||||||
|
- Removal of upsell links and Pro-edition placeholder UIs
|
||||||
|
|
||||||
|
The following external interfaces retain the upstream "docuseal" naming for
|
||||||
|
SDK compatibility with the existing DocuSeal embedding ecosystem and must
|
||||||
|
not be renamed without coordinating with downstream consumers:
|
||||||
|
|
||||||
|
- `<docuseal-form>` and `<docuseal-builder>` custom HTML elements
|
||||||
|
- `@docuseal/react`, `@docuseal/vue`, `@docuseal/angular` npm packages
|
||||||
|
referenced in the embedding code samples
|
||||||
|
|
||||||
|
The Dockerfile pulls a pre-trained PDF field-detection ONNX model
|
||||||
|
(`model_704_int8.onnx`) from
|
||||||
|
https://github.com/docusealco/fields-detection/releases . That model is
|
||||||
|
published under the upstream DocuSeal organisation's release artefacts; we
|
||||||
|
consume it as a binary dependency rather than redistributing.
|
||||||
|
|
||||||
|
The original DocuSeal copyright notice on third-party JavaScript ports
|
||||||
|
(e.g. app/javascript/submission_form/calculator.js) is retained per
|
||||||
|
standard open-source attribution practice.
|
||||||
@ -0,0 +1,67 @@
|
|||||||
|
# Rebranding Summary: DocuSeal → WaboSign
|
||||||
|
|
||||||
|
This document records the changes made when forking DocuSeal into WaboSign. It exists for transparency, to fulfil AGPLv3 §7(b) disclosure expectations, and as a reference for future maintainers tracing why a particular file was touched.
|
||||||
|
|
||||||
|
Scope: ~183 files modified. Decisions were made in a planning conversation before changes were applied; the final plan lives at [.claude/plans/this-agpl-project-has-toasty-cake.md](.claude/plans/this-agpl-project-has-toasty-cake.md) on the developer's machine.
|
||||||
|
|
||||||
|
## Brand & identity
|
||||||
|
|
||||||
|
- Ruby module `Docuseal` → `Wabosign` ([lib/wabosign.rb](lib/wabosign.rb)); Rails app module `DocuSeal` → `WaboSign` ([config/application.rb](config/application.rb))
|
||||||
|
- All hardcoded `DocuSeal` strings in views, mailers, controllers, libs, JS/Vue replaced with `Wabosign.product_name` (or equivalents)
|
||||||
|
- [config/locales/i18n.yml](config/locales/i18n.yml): 168 user-facing strings sweep-replaced across all 14 languages
|
||||||
|
- New favicons, apple-touch-icons, and logo SVG (a neutral "W" mark) generated via Inkscape
|
||||||
|
- daisyUI theme renamed `docuseal` → `wabosign` in [tailwind.config.js](tailwind.config.js)
|
||||||
|
- Discord, Twitter, ChatGPT URLs removed entirely
|
||||||
|
- New brand constants in [lib/wabosign.rb](lib/wabosign.rb):
|
||||||
|
- `PRODUCT_URL = 'https://sign.wabo.cc'`
|
||||||
|
- `GITHUB_URL = 'https://github.com/wabolabs/wabosign'`
|
||||||
|
- `SUPPORT_EMAIL = 'wabosign@wabo.cc'`
|
||||||
|
|
||||||
|
## AGPL §7(b) attribution
|
||||||
|
|
||||||
|
- `Wabosign::UPSTREAM_NAME = 'DocuSeal'` and `Wabosign::UPSTREAM_URL` constants added
|
||||||
|
- [app/views/shared/_powered_by.html.erb](app/views/shared/_powered_by.html.erb) and [app/views/shared/_email_attribution.html.erb](app/views/shared/_email_attribution.html.erb) now render a "based on DocuSeal (AGPLv3)" credit alongside the WaboSign brand
|
||||||
|
- [app/javascript/submission_form/completed.vue](app/javascript/submission_form/completed.vue) carries the same credit on the post-signing completion screen
|
||||||
|
- New `based_on` i18n key added to all 14 language sections
|
||||||
|
- [README.md](README.md) and [LICENSE_ADDITIONAL_TERMS](LICENSE_ADDITIONAL_TERMS) rewritten
|
||||||
|
- New [NOTICE](NOTICE) file added crediting DocuSeal LLC and listing modifications
|
||||||
|
|
||||||
|
## Freemium gates removed
|
||||||
|
|
||||||
|
- Pro-upsell placeholders rewritten or neutralised for SMS, SSO, and logo personalisation (these features are not bundled in the upstream OSS edition; the placeholders now explain that rather than advertising a paid tier)
|
||||||
|
- Bulk-send and reminder placeholders rewritten as neutral info; reminder-duration multitenant gate stripped in [app/views/notifications_settings/_reminder_form.html.erb](app/views/notifications_settings/_reminder_form.html.erb)
|
||||||
|
- "Plans" / "Console" / "Upgrade" links removed from [app/views/shared/_settings_nav.html.erb](app/views/shared/_settings_nav.html.erb) and [app/views/shared/_navbar_buttons.html.erb](app/views/shared/_navbar_buttons.html.erb)
|
||||||
|
- Multitenant gates on Decline / Delegate / Personalization toggles, reply-to, BCC, and send-on-completion stripped in [app/views/accounts/show.html.erb](app/views/accounts/show.html.erb) and [app/views/personalization_settings/_documents_copy_email_form.html.erb](app/views/personalization_settings/_documents_copy_email_form.html.erb)
|
||||||
|
- Routes: `timestamp_server` and `detect_fields` no longer gated by `multitenant?` in [config/routes.rb](config/routes.rb)
|
||||||
|
- Pricing/upsell links removed from [app/javascript/template_builder/conditions_modal.vue](app/javascript/template_builder/conditions_modal.vue), [formula_modal.vue](app/javascript/template_builder/formula_modal.vue), [fields.vue](app/javascript/template_builder/fields.vue), and [payment_settings.vue](app/javascript/template_builder/payment_settings.vue)
|
||||||
|
- `ENTERPRISE_PATHS` 404-with-upsell-message removed from [app/controllers/errors_controller.rb](app/controllers/errors_controller.rb)
|
||||||
|
|
||||||
|
## Migrations & infrastructure
|
||||||
|
|
||||||
|
- New migration [db/migrate/20260515183000_rename_docuseal_aatl_cert.rb](db/migrate/20260515183000_rename_docuseal_aatl_cert.rb) updates the AATL cert `name` field inside encrypted JSON value blobs from `docuseal_aatl` → `wabosign_aatl`
|
||||||
|
- `AATL_CERT_NAME` constant updated accordingly
|
||||||
|
- [Dockerfile](Dockerfile): user, group, home directory, and workdir renamed `docuseal` → `wabosign`
|
||||||
|
- [docker-compose.yml](docker-compose.yml): image, volume, and Postgres DB name → `wabolabs/wabosign` / `wabosign`
|
||||||
|
- [config/database.yml](config/database.yml): dev/test DB names → `wabosign_dev` / `wabosign_test`
|
||||||
|
- [.github/workflows/ci.yml](.github/workflows/ci.yml) and [.github/workflows/docker.yml](.github/workflows/docker.yml): image name and test DB renamed
|
||||||
|
- `docuseal.env` config file path → `wabosign.env` in [config/dotenv.rb](config/dotenv.rb)
|
||||||
|
- DOM IDs and localStorage keys renamed `docuseal_*` → `wabosign_*` across [app/javascript/template_builder/](app/javascript/template_builder/)
|
||||||
|
- Webhook `USER_AGENT` and corresponding spec assertions updated
|
||||||
|
|
||||||
|
## Intentionally preserved upstream references
|
||||||
|
|
||||||
|
Per AGPL §7(b) and downstream SDK compatibility, the following references remain. All are documented in [NOTICE](NOTICE).
|
||||||
|
|
||||||
|
- `<docuseal-form>` and `<docuseal-builder>` custom HTML elements, plus the `@docuseal/{react,vue,angular}` npm packages referenced in [app/views/templates/_embedding.html.erb](app/views/templates/_embedding.html.erb) and registered in [app/controllers/embed_scripts_controller.rb](app/controllers/embed_scripts_controller.rb). Renaming these would break embeddings published against the upstream SDKs.
|
||||||
|
- Upstream binary URLs in [Dockerfile](Dockerfile) and CI: `github.com/docusealco/fields-detection` (ONNX model) and `github.com/docusealco/pdfium-binaries`.
|
||||||
|
- DocuSeal LLC copyright notice on the JavaScript calculator port at [app/javascript/submission_form/calculator.js](app/javascript/submission_form/calculator.js).
|
||||||
|
|
||||||
|
## Verification status
|
||||||
|
|
||||||
|
- Ruby syntax-checked all edited `.rb` files (lib, controllers, mailers, migration)
|
||||||
|
- ERB-compiled the edited view partials
|
||||||
|
- YAML-parsed `config/locales/i18n.yml` and `docker-compose.yml`
|
||||||
|
- JSON-parsed `docs/openapi.json`
|
||||||
|
- Webhook spec assertions updated to match new `WaboSign Webhook` user-agent
|
||||||
|
|
||||||
|
Full Rails boot requires Ruby 4.0.1, which was not available on the dev machine that performed the rebrand. Recommend running `docker compose up --build` to verify boot end-to-end before publishing.
|
||||||
@ -1,5 +1,5 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class ApplicationJob < ActiveJob::Base
|
class ApplicationJob < ActiveJob::Base
|
||||||
retry_on StandardError, wait: 6.seconds, attempts: 5 unless Docuseal.multitenant?
|
retry_on StandardError, wait: 6.seconds, attempts: 5 unless Wabosign.multitenant?
|
||||||
end
|
end
|
||||||
|
|||||||
@ -1,25 +0,0 @@
|
|||||||
<tr scope="row" class="group">
|
|
||||||
<td class="flex items-center space-x-1">
|
|
||||||
<%= svg_icon('discount_check_filled', class: 'w-6 h-6 text-green-500') %>
|
|
||||||
<span class="flex items-center">
|
|
||||||
<%= t('docuseal_trusted_signature') %>
|
|
||||||
<div class="tooltip ml-1" data-tip="<%= t('sign_documents_with_trusted_certificate_provided_by_docu_seal_your_documents_and_data_are_never_shared_with_docu_seal_p_d_f_checksum_is_provided_to_generate_a_trusted_signature') %>">
|
|
||||||
<%= svg_icon('circle_question', class: 'w-4 h-4 stroke-1') %>
|
|
||||||
</div>
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<a href="<%= "#{Docuseal::CLOUD_URL}/sign_up?#{{ redir: "#{Docuseal::CONSOLE_URL}/on_premises" }.to_query}" %>" class="btn btn-neutral btn-sm text-white">
|
|
||||||
<%= t('unlock_with_docuseal_pro') %>
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<div class="tooltip" data-tip="<%= t('unlock_with_docuseal_pro') %>">
|
|
||||||
<%= button_to settings_esign_path, method: :put, params: { name: Docuseal::AATL_CERT_NAME }, class: 'btn btn-outline btn-neutral btn-xs whitespace-nowrap', title: t('make_default'), disabled: true do %>
|
|
||||||
<%= t('make_default') %>
|
|
||||||
<% end %>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
<title>
|
<title>
|
||||||
<%= content_for(:html_title) || (signed_in? ? 'DocuSeal' : 'DocuSeal | Open Source Document Signing') %>
|
<%= content_for(:html_title) || (signed_in? ? Wabosign.product_name : "#{Wabosign.product_name} | Open Source Document Signing") %>
|
||||||
</title>
|
</title>
|
||||||
<%= render 'shared/meta' %>
|
<%= render 'shared/meta' %>
|
||||||
|
|||||||
@ -1 +0,0 @@
|
|||||||
<%= render 'reminder_placeholder' %>
|
|
||||||
@ -1,15 +0,0 @@
|
|||||||
<div class="alert my-4">
|
|
||||||
<%= svg_icon('info_circle', class: 'w-6 h-6') %>
|
|
||||||
<div>
|
|
||||||
<p class="font-bold">
|
|
||||||
<%= t('unlock_with_docuseal_pro') %>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<%= t('send_automatic_email_reminders_to_your_recipients') %>
|
|
||||||
<br>
|
|
||||||
<a class="link font-medium" target="_blank" href="<%= Docuseal.multitenant? ? console_redirect_index_path(redir: "#{Docuseal::CONSOLE_URL}/plans") : "#{Docuseal::CLOUD_URL}/sign_up?#{{ redir: "#{Docuseal::CONSOLE_URL}/on_premises" }.to_query}" %>" data-turbo="false">
|
|
||||||
<%= t('learn_more') %>
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@ -1,10 +1,10 @@
|
|||||||
<a href="https://github.com/docusealco/docuseal" class="btn btn-neutral btn-sm btn-outline inline-flex items-center justify-center" target="_blank" alt="Star on GitHub" style="height: 37px">
|
<a href="<%= Wabosign::GITHUB_URL %>" class="btn btn-neutral btn-sm btn-outline inline-flex items-center justify-center" target="_blank" alt="Star on GitHub" style="height: 37px">
|
||||||
<span>
|
<span>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
||||||
<path fill="currentColor" d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" />
|
<path fill="currentColor" d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" />
|
||||||
</svg>
|
</svg>
|
||||||
</span>
|
</span>
|
||||||
<span class="flex">
|
<span class="flex">
|
||||||
<span class="hidden lg:block">Star on </span>GitHub
|
<span class="hidden lg:block">View on </span>GitHub
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 500 B |
@ -1,8 +1,3 @@
|
|||||||
<% if signed_in? && current_user != true_user %>
|
<% if signed_in? && current_user != true_user %>
|
||||||
<%= render 'shared/test_alert' %>
|
<%= render 'shared/test_alert' %>
|
||||||
<% elsif request.path.starts_with?('/settings') %>
|
|
||||||
<%= link_to "#{Docuseal::CLOUD_URL}/sign_up?#{{ redir: "#{Docuseal::CONSOLE_URL}/on_premises" }.to_query}", class: 'hidden md:inline-flex btn btn-warning btn-sm', data: { prefetch: false } do %>
|
|
||||||
<%= t('upgrade') %>
|
|
||||||
<% end %>
|
|
||||||
<span class="hidden md:inline-flex h-3 border-r border-base-content"></span>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@ -1,2 +1,2 @@
|
|||||||
<%= render 'shared/logo' %>
|
<%= render 'shared/logo' %>
|
||||||
<span>DocuSeal</span>
|
<span><%= Wabosign.product_name %></span>
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
<%= render 'start_form/docuseal_logo' %>
|
<%= render 'start_form/brand_logo' %>
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
<div class="mt-2 mb-1">
|
<div class="mt-2 mb-1">
|
||||||
<div class="tooltip w-full" data-tip="<%= t('unlock_with_docuseal_pro') %>">
|
<div class="tooltip w-full" data-tip="SMS provider integration not configured">
|
||||||
<%= link_to submitter.sent_at? ? t('re_send_sms') : t('send_sms'), Docuseal.multitenant? ? console_redirect_index_path(redir: "#{Docuseal::CONSOLE_URL}/plans") : "#{Docuseal::CLOUD_URL}/sign_up?#{{ redir: "#{Docuseal::CONSOLE_URL}/on_premises" }.to_query}", class: 'btn btn-sm btn-primary text-gray-400 w-full' %>
|
<button type="button" class="btn btn-sm btn-primary text-gray-400 w-full" disabled>
|
||||||
|
<%= submitter.sent_at? ? t('re_send_sms') : t('send_sms') %>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue