Commit graph

16032 commits

Author SHA1 Message Date
Vijaykant Yadav
c27d64a524 Fix: module version leak across branches during git sync push
When exporting referenced modules during push, if a ModuleViewer's pinned
module_reference_id came from a cross-workspace import (and doesn't exist in
the current workspace DB), the pinned lookup failed silently. Because the
branch-local resolution was in an `else if` block, it never ran as a fallback.

This caused export() to execute without a version_id filter, serializing ALL
app_versions for the module (including broken stubs from other branches) into
the git commit — violating the one-version-per-branch contract.

Changed `else if (resolvedId && parentBranchId)` to
`if (!versionDbId && resolvedId && parentBranchId)` so branch-local
resolution always runs as a fallback when the pinned lookup doesn't resolve.
2026-05-22 18:14:14 +05:30
Adish M
b1315bbe06
🚀 chore: update submodules to latest main after auto-merge (#16534)
Some checks are pending
CI / e2e-test (push) Blocked by required conditions
CI / build (push) Waiting to run
CI / lint-for-plugins (push) Blocked by required conditions
CI / lint-for-frontend (push) Blocked by required conditions
CI / lint-for-server (push) Blocked by required conditions
CI / unit-test (push) Blocked by required conditions
2026-05-22 10:14:06 +05:30
Adish M
3be5935ef5
Merge pull request #16533 from ToolJet/adishM98-patch-2
Add cloud-frontend-cf-pages-prod workflow file
2026-05-22 10:12:08 +05:30
Adish M
56a30f8785
Add cloud-frontend-cf-pages-prod workflow file 2026-05-22 10:11:51 +05:30
Midhun G S
6c7281e7e3
Merge pull request #16526 from ToolJet/release/v3.21.35-beta
Some checks are pending
CI / build (push) Waiting to run
CI / lint-for-plugins (push) Blocked by required conditions
CI / lint-for-frontend (push) Blocked by required conditions
CI / lint-for-server (push) Blocked by required conditions
CI / unit-test (push) Blocked by required conditions
CI / e2e-test (push) Blocked by required conditions
Release v3.21.35 beta
2026-05-21 14:42:16 +05:30
Muhsin Shah C P
8b03ddc133
Fix: Use branch isDefault flag for GitSyncModal mode detection (#16491)
* chore: update subproject commit reference in frontend/ee

* feat: add appId parameter validation and fetchAppById method in WorkspaceContextService
2026-05-21 13:23:41 +05:30
gsmithun4
14614bb254 Merge branch 'main' into release/v3.21.35-beta 2026-05-21 13:19:55 +05:30
Adish M
ea459efcdf
Automation fixes for new vm (#16521)
Some checks are pending
CI / build (push) Waiting to run
CI / lint-for-plugins (push) Blocked by required conditions
CI / lint-for-frontend (push) Blocked by required conditions
CI / lint-for-server (push) Blocked by required conditions
CI / unit-test (push) Blocked by required conditions
CI / e2e-test (push) Blocked by required conditions
* dummy pr for automation

* Fixed error messages
2026-05-21 12:58:47 +05:30
Srimanitejas123
852af346fa Fixed error messages 2026-05-21 12:03:20 +05:30
Srimanitejas123
807c9b31d2 dummy pr for automation 2026-05-21 10:41:27 +05:30
gsmithun4
30e550a6b3 chore: update version to 3.20.162-lts across all components
Some checks are pending
CI / build (push) Waiting to run
CI / lint-for-plugins (push) Blocked by required conditions
CI / lint-for-frontend (push) Blocked by required conditions
CI / lint-for-server (push) Blocked by required conditions
CI / unit-test (push) Blocked by required conditions
CI / e2e-test (push) Blocked by required conditions
Deploy Storybook to Netlify / deploy-storybook (push) Waiting to run
2026-05-21 00:55:03 +05:30
Adish M
e41dacb8c5
🚀 chore: update submodules to latest lts-3.16 after auto-merge (#16519)
Co-authored-by: gsmithun4 <3417097+gsmithun4@users.noreply.github.com>
2026-05-21 00:52:11 +05:30
Adish M
791ae7f167
🚀 chore: update submodules to latest lts-3.16 after auto-merge (#16518)
Co-authored-by: gsmithun4 <3417097+gsmithun4@users.noreply.github.com>
2026-05-21 00:52:07 +05:30
Shantanu Mane
7a27c4d1c7
fix: pro plan workspace admin blocked from app preview (#16486)
* fix: allow pro plan workspace admins to preview apps

Pro plan has multiEnvironment=false. validateVersionEnvironment blocked any
request with environment_name set — including 'development' — causing a 403
that the frontend mapped to the restricted-preview error page.

Backend: allow 'development' env through even when multi-env is disabled;
only block staging/production to prevent URL manipulation.

Frontend: use featureAccess.multiEnvironment flag in isBasicPlan check
instead of hardcoded plan === 'starter', so pro plan also skips env in the
redirect URL.

* fix: align useAppPreviewLink isBasicPlan check with multiEnvironment flag

Same pattern as AppsRoute — was checking plan === 'starter', missing pro
and basic plans. Now uses !featureAccess.multiEnvironment consistently.

* fix: preserve original URL on app-scoped logout redirect

The app-scoped branch in redirectToLoginPage hardcoded
/applications/:slug/login with no redirectTo, dropping the env/version
preview params. After re-login, AppLoginPage fell back to
/applications/:slug (released-app viewer URL), which 501s for unreleased
apps and shows "App URL Unavailable".

Mirror the workspace branch's behavior: honor avoidRedirection and
preserve the original URL as redirectTo when false. Update logoutAction
to pass false so the runtime Logout event returns the user to the same
preview view after sign-in.

Regression introduced in #15716.

* chore: update package-lock files after lts-3.16 merge

* revert: remove frontend isBasicPlan changes, backend fix is sufficient

Stripping env from the URL on the frontend is the wrong approach — for
multi-env plans, an explicit env param (e.g. staging) must be preserved.
The backend fix (allowing development env through when multi-env is
disabled) is the correct and sufficient fix.

* fix: use multiEnvironment flag to gate env param in preview URLs

Plans without multi-env access (basic, pro, starter) should not include
?env= in preview URLs — it is meaningless for them and was causing the
backend to reject the request.

Plans with multi-env (team, enterprise) preserve the env param so
per-env per-version preview links continue to work correctly.

* fix: use strict equality for multiEnvironment check to preserve env when featureAccess is not yet loaded

---------

Co-authored-by: Akshay Sasidharan <akshaysasidharan93@gmail.com>
2026-05-21 00:51:23 +05:30
Adish M
5622094ca0
🚀 chore: update submodules to latest lts-3.16 after auto-merge (#16517)
Co-authored-by: gsmithun4 <3417097+gsmithun4@users.noreply.github.com>
2026-05-21 00:51:05 +05:30
Shantanu Mane
c2d8ba08ea
Add invitation token and invite URL generation for external API users and expand test coverage (#16413)
* feat(external-api): return per-workspace inviteUrl in POST /ext/users response

* test(external-api): expand POST /ext/users coverage — roles, multi-group, and failure conditions

Adds 8 new e2e tests covering role assignment, per-workspace role variance,
multiple custom groups, and all key failure paths (duplicate email, missing
workspace, default group in groups field, nonexistent group, end-user/builder
group conflict). Also seeds the builder default group in maybeCreateDefaultGroupPermissions
to unblock role-assignment tests against test orgs.

* test(external-api): clarify conflicting-permissions error shape in users spec

* feat(external-api): update default status to INVITED in user-related DTOs and add defaultOrganizationId field

* feat(external-api): enhance invited user session guard and expand user creation tests for archived status

* feat(external-api): add tests for org-invite URL behavior based on user and workspace status

* feat(external-api): update user status handling and invite URL logic in tests

* feat(external-api): update invite URL logic and OrganizationUser status handling for active users
2026-05-21 00:50:03 +05:30
Akshay
a01840f4f5
Fix: preserve original URL on app-scoped logout redirect (#16313)
* fix: preserve original URL on app-scoped logout redirect

The app-scoped branch in redirectToLoginPage hardcoded
/applications/:slug/login with no redirectTo, dropping the env/version
preview params. After re-login, AppLoginPage fell back to
/applications/:slug (released-app viewer URL), which 501s for unreleased
apps and shows "App URL Unavailable".

Mirror the workspace branch's behavior: honor avoidRedirection and
preserve the original URL as redirectTo when false. Update logoutAction
to pass false so the runtime Logout event returns the user to the same
preview view after sign-in.

Regression introduced in #15716.

* chore: update package-lock files after lts-3.16 merge
2026-05-21 00:49:43 +05:30
Shantanu Mane
f05ead85e8
Merge pull request #16418 from ToolJet/feat/white-labelling-banner
Add banner image support and update LoginPageRightPanel
2026-05-21 00:48:43 +05:30
Adish M
d5287caa2c
Merge pull request #16510 from ToolJet/adishM98-patch-2
Some checks are pending
CI / build (push) Waiting to run
CI / lint-for-plugins (push) Blocked by required conditions
CI / lint-for-frontend (push) Blocked by required conditions
CI / lint-for-server (push) Blocked by required conditions
CI / unit-test (push) Blocked by required conditions
CI / e2e-test (push) Blocked by required conditions
Deploy Storybook to Netlify / deploy-storybook (push) Waiting to run
Add VPN API URL setup in workflow
2026-05-20 17:41:49 +05:30
Adish M
5aff51b37f
Add VPN API URL setup in workflow 2026-05-20 17:41:31 +05:30
Adish M
7848496f90
Merge pull request #16509 from ToolJet/adishM98-patch-2
Some checks are pending
CI / build (push) Waiting to run
CI / lint-for-plugins (push) Blocked by required conditions
CI / lint-for-frontend (push) Blocked by required conditions
CI / lint-for-server (push) Blocked by required conditions
CI / unit-test (push) Blocked by required conditions
CI / e2e-test (push) Blocked by required conditions
Add VPN API URL setup in workflow
2026-05-20 17:40:31 +05:30
Adish M
e002af2ac0
Add VPN API URL setup in workflow 2026-05-20 17:40:15 +05:30
Adish M
216efe7533
Merge pull request #16500 from ToolJet/adishM98-patch-2
Some checks are pending
CI / build (push) Waiting to run
CI / lint-for-plugins (push) Blocked by required conditions
CI / lint-for-frontend (push) Blocked by required conditions
CI / lint-for-server (push) Blocked by required conditions
CI / unit-test (push) Blocked by required conditions
CI / e2e-test (push) Blocked by required conditions
Integrate VPN connection and disconnection in workflow
2026-05-20 12:50:11 +05:30
Adish M
26d87ca223
Integrate VPN connection and disconnection in workflow
Added VPN connection steps for accessing private resources during CI.
2026-05-20 12:49:54 +05:30
Adish M
dcb55da3be
🚀 chore: update submodules to latest main after auto-merge (#16499)
Co-authored-by: johnsoncherian <57667706+johnsoncherian@users.noreply.github.com>
2026-05-20 12:33:41 +05:30
Kavin Venkatachalam
b83e832d48
fix: enhance drag-and-drop functionality by capturing ghost element's bounding rect (#16414) 2026-05-20 12:31:37 +05:30
Adish M
94cec4e8e5
Merge pull request #16257 from ToolJet/fix/vpn-automation-lts
Some checks are pending
CI / build (push) Waiting to run
CI / lint-for-plugins (push) Blocked by required conditions
CI / lint-for-frontend (push) Blocked by required conditions
CI / lint-for-server (push) Blocked by required conditions
CI / unit-test (push) Blocked by required conditions
CI / e2e-test (push) Blocked by required conditions
Deploy Storybook to Netlify / deploy-storybook (push) Waiting to run
feat: add Cypress VPN workflow for automated testing
2026-05-20 10:38:44 +05:30
Adish M
09dced6836
Merge branch 'lts-3.16' into fix/vpn-automation-lts 2026-05-19 16:26:20 +05:30
Adish M
fd1e1171d9
Update VPN action versions in workflow 2026-05-19 16:23:23 +05:30
Shaurya Sharma
cfd5a7171c
fix: Table - Add new rows modal mirrors column widths (#16459)
Some checks are pending
CI / lint-for-frontend (push) Blocked by required conditions
CI / build (push) Waiting to run
CI / lint-for-plugins (push) Blocked by required conditions
CI / lint-for-server (push) Blocked by required conditions
CI / unit-test (push) Blocked by required conditions
CI / e2e-test (push) Blocked by required conditions
Deploy Storybook to Netlify / deploy-storybook (push) Waiting to run
2026-05-19 16:15:28 +05:30
Devanshu Rastogi
620539d1bb
Enhance file duplication check with isSameFile utility function (#16463)
* fix: enhance file duplication check in FilePicker by introducing isSameFile utility function

* fix: update FilePicker to use internalId for file management and improve error handling

* refactor: move clearErrorStates function to improve code organization in useFilePicker
2026-05-19 16:14:45 +05:30
Adish M
69452df4e4
Merge pull request #16469 from ToolJet/fix/remove-jira
fix: remove Jira plugin dependency from package.json
2026-05-19 14:27:03 +05:30
Adish M
778554eced fix: remove Jira plugin dependency from package.json 2026-05-19 14:16:27 +05:30
Midhun G S
09751c15ed
Merge pull request #16462 from ToolJet/release/v3.21.34-beta
Some checks are pending
CI / build (push) Waiting to run
CI / lint-for-plugins (push) Blocked by required conditions
CI / lint-for-frontend (push) Blocked by required conditions
CI / lint-for-server (push) Blocked by required conditions
CI / unit-test (push) Blocked by required conditions
CI / e2e-test (push) Blocked by required conditions
Release v3.21.34 beta
2026-05-19 10:55:58 +05:30
Adish M
59527340bb
🚀 chore: update submodules to latest lts-3.16 after auto-merge (#16464)
Some checks are pending
CI / build (push) Waiting to run
CI / lint-for-plugins (push) Blocked by required conditions
CI / lint-for-frontend (push) Blocked by required conditions
CI / lint-for-server (push) Blocked by required conditions
CI / unit-test (push) Blocked by required conditions
CI / e2e-test (push) Blocked by required conditions
Deploy Storybook to Netlify / deploy-storybook (push) Waiting to run
Co-authored-by: johnsoncherian <57667706+johnsoncherian@users.noreply.github.com>
2026-05-19 10:53:05 +05:30
Kavin Venkatachalam
33052bcf6d
Feat: Move JS library license check to backend (#16005)
* fix: gate JS library loading on license fetch to fix public/released apps

JS libraries were silently skipped on public and released apps because
featureAccess?.appJsLibraries was still undefined when isComponentLayoutReady
fired. Introduces isLicenseFetched flag and handles fetch errors so the
gate is never blocked indefinitely for unauthenticated users.

* feat: remove license check for JS libraries loading in frontend and backend
2026-05-19 10:51:01 +05:30
Muhsin Shah C P
f3da972089
Feature: Restrict version rename for git-sync orgs (#16370)
* feat: gate version rename restrictions behind git sync; restore non-git-sync behavior

- Add useGitSyncConfig() hook as shared source of truth for isGitSyncEnabled
  and defaultBranch (reads orgGit store, uses correct github_branch field)
- VersionDropdownItem: show branch name as display name for git-sync drafts;
  show fixed description "Latest commit to main will appear here" for git-sync
  drafts; hide "Edit details" only when git sync is ON (non-git-sync keeps
  original cursor/tooltip/disabled behavior for module versions)
- VersionSwitcherButton: header shows "Draft" (not branch name) for git-sync
  draft versions
- VersionManagerDropdown: source isGitSyncEnabled from hook; render
  EditVersionModal only for non-git-sync workspaces
- CreateDraftVersionModal: show version name input only for non-git-sync;
  set fixed draft name (branch name) and description when git sync is ON;
  replace appGit-based effect with useGitSyncConfig hook
- CreateVersionModal: blank name/description pre-fill when git sync ON; fix
  TDZ by moving effectiveIsBranchingEnabled after useStore block; add git-ref
  character validation for git-sync-enabled orgs
- service.ts: block name/description edits on PUBLISHED versions only when
  org-level git sync is enabled (non-git-sync orgs retain edit capability)

* feat: add immutability warning banner to Save version modal for git-sync orgs

Adds an inline info banner "Name and description cannot be edited after saving"
below the description field when git sync is enabled, matching the Figma design.

* fix: move immutability warning banner to top of Save version modal body

Figma (node 2091-172093) shows the banner above the version name input,
not below the description field.

* fix: improve error message for invalid version names in CreateVersionModal

* feat: enforce version name validation across modals and DTOs

* feat: add validation for version names to prevent spaces and special characters

* feat: refactor version selection logic in CreateVersionModal for improved clarity

* feat: enhance version name validation and update API request format

* Fixed draft version case

---------

Co-authored-by: Yukti Goyal <yuktigoyal02@gmail.com>
Co-authored-by: YuktiGoyal02 <100783212+YuktiGoyal02@users.noreply.github.com>
2026-05-19 10:48:09 +05:30
Shantanu Mane
73587834e2
Feat: License Env Mapping (#15873)
* feat: add environment configuration support for Git providers and enhance git sync functionality

* feat: update Git environment constants and integrate OrganizationGitSyncRepository

* feat: add testProviderConnection method to gitSyncService for testing Git provider connections

* chore: remove scanning on module init

* feat: integrate OrganizationEnvRegistryService and reload envConfig on workspace create and slug update

* feat: eload env config on onboarding

* feat: add testProviderConnection method and update LicenseBase for envGitMapping

* fix: handle downgrade path for env registry

* fix flaky case in granular access

* uncommented changes

* feat: update .gitignore to include additional environment files

* feat: refactor organization environment handling and remove deprecated service

* feat: implement Git environment registry service and refactor organization environment handling

* feat: rename envGitMapping to workspaceEnv across licensing module

* chore: remove unnecessary try-catch

* refactor(org-env): update interfaces — remove callback contract, add ensureResolved

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: remove reload-on-org-event, swap bootstrap init order

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(org-env): add getResolvedOrganizationIds() to interface, CE stub, and test

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* test: improve assertions in getResolvedOrganizationIds() test

* feat: refactor GitEnvRegistryService import paths and add new service implementation

* feat: add applyLicenseToResolvedOrgs method to IGitEnvRegistryService and GitEnvRegistryService

* refactor: replace GitEnvRegistryService with GitSyncEnvUtilService and update related references

* feat: add use_env_config column to organization_git_sync and remove env_git_provider column

* refactor: remove EncryptionModule import and update OrganizationEnvModule imports

* feat: introduce OrganizationEnvUtilService and update OrganizationEnvModule to utilize it

* feat: add updateEnvLicenseSetting method and related feature key for environment license settings

---------

Co-authored-by: Yukti Goyal <yuktigoyal02@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 10:46:15 +05:30
Manish Kushare
1f64c91b7c
fix: align column text based on horizontal alignment setting in TableHeader (#16260) 2026-05-19 10:37:50 +05:30
Manish Kushare
9d775b86dc
hide preview overlay when currentValue is empty or undefined (#16327) 2026-05-19 10:35:06 +05:30
gsmithun4
b13e30c880 Merge branch 'main' into release/v3.21.34-beta 2026-05-18 23:01:11 +05:30
gsmithun4
57b0af3007 chore: update version to 3.20.161-lts across all components
Some checks are pending
CI / build (push) Waiting to run
CI / lint-for-plugins (push) Blocked by required conditions
CI / lint-for-frontend (push) Blocked by required conditions
CI / lint-for-server (push) Blocked by required conditions
CI / unit-test (push) Blocked by required conditions
CI / e2e-test (push) Blocked by required conditions
Deploy Storybook to Netlify / deploy-storybook (push) Waiting to run
2026-05-18 22:52:41 +05:30
Shaurya Sharma
fca02e9fc3
Removed fn condition from updateDependencyValues for SetExposedVariables (#16410) 2026-05-18 22:41:40 +05:30
Shaurya Sharma
38e064edb0
fix: AppCanvas - reset scroll to top on page switch (#16457)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 22:41:19 +05:30
Shaurya Sharma
ff697ed997
fix: Modal - release canvas scroll lock when modal unmounts during page switch (#16456) 2026-05-18 22:40:59 +05:30
Shaurya Sharma
3a623cebc6
fix: Inspector - retain "all editable" toggle when list is empty (#16419)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 22:38:26 +05:30
Shaurya Sharma
8631b6d9c8
feat: QueryManager - add fx and custom message for query confirmation (#16320)
* feat: QueryManager - add fx and custom message for query confirmation

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Minor fix

* Design update

* Yes button same size as cancel button

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 22:33:39 +05:30
Adish M
a0ef8f71c6
🚀 chore: update submodules to latest lts-3.16 after auto-merge (#16461)
Co-authored-by: gsmithun4 <3417097+gsmithun4@users.noreply.github.com>
2026-05-18 22:19:53 +05:30
Adish M
468bd53c9f
🚀 chore: update submodules to latest main after auto-merge (#16460)
Some checks are pending
CI / build (push) Waiting to run
CI / lint-for-plugins (push) Blocked by required conditions
CI / lint-for-frontend (push) Blocked by required conditions
CI / lint-for-server (push) Blocked by required conditions
CI / unit-test (push) Blocked by required conditions
CI / e2e-test (push) Blocked by required conditions
Co-authored-by: gsmithun4 <3417097+gsmithun4@users.noreply.github.com>
2026-05-18 22:18:55 +05:30
Rudhra Deep Biswas
5aff8282f8
Fix (#16454) 2026-05-18 22:16:57 +05:30