Commit graph

150 commits

Author SHA1 Message Date
Nakul Nagargade
433e1bd4c4
Enhance TypeScript support in frontend configuration (#15576)
* test: verify pre-commit hook

* fix: clean up code formatting and improve readability across multiple components

* chore: update subproject commit reference in frontend/ee

* chore: update eslint to version 9.26.0 and remove unused dependencies from package.json

fix: update submodule reference in server/ee

* chore: refactor ESLint configuration and add quiet linting script; update components to disable specific ESLint rules

* chore: add GitHub Copilot review instructions for App Builder team

Covers backward compatibility rules, styling conventions, state management,
resolution system, widget definitions, and common review flags.

* chore: add review instructions for App Builder, Data Migrations, Server Widget Config, Widget Components, and Widget Config

* Enhance TypeScript support in frontend configuration

- Added TypeScript parser and linting rules to ESLint configuration.
- Updated Babel configuration to include TypeScript preset.
- Modified package.json and package-lock.json to include TypeScript and related dependencies.
- Introduced tsconfig.json for TypeScript compiler options.
- Updated Webpack configuration to support .ts and .tsx file extensions.
- Adjusted linting and formatting scripts to include TypeScript files.

* chore: update TypeScript ESLint packages and subproject commits

---------

Co-authored-by: kavinvenkatachalam <kavin.saratha@gmail.com>
Co-authored-by: Johnson Cherian <johnsonc.dev@gmail.com>
2026-03-19 12:41:32 +05:30
Siddharth Pundir
32c4caab12
Graphql revamp (#15551)
* Graphql revamp

* Added query params

* Passing hasdatasource to the sanitize functions

* Design fix

* Fix for right side border for key input

* Resolving the comment
2026-03-18 19:39:16 +05:30
Ajith KV
8f43d4743a
Add data-cy attirbutes for query manager components (#14937)
* Add data-cy attirbutes for query manager components

* Update data-cy

* update data-cy

* update data-cy

* update data-cy attribute

* Add data-cy for tjdb query components

* update label data-cy

* update data-cy

* update data-cy
2026-03-12 21:43:37 +05:30
Sahil Dewangan
7896a83dc4
Fix: support custom primary keys in tooljet-db delete rows execution (#15234)
* fix: use custom private key for delete operation in Tooljet db

* fix: fetch PK column using tableOperationsService

* fix: set orderColumn in deleteRowOptions

# Conflicts:
#	frontend/src/AppBuilder/QueryManager/QueryEditors/TooljetDatabase/ToolJetDbOperations.jsx

---------

Co-authored-by: gsmithun4 <gsmithun4@gmail.com>
2026-03-06 20:47:49 +05:30
devanshu052000
182e92afef Fix: Query content getting duplicated to other queries on switching 2026-03-04 00:03:55 +05:30
Muhsin Shah
490273f852 Merge branch 'lts-3.16' into feature/workflow-versions-and-environments 2026-02-24 01:56:49 +05:30
abhijeet760
999b35d7e8
TJDB: In ToolJet DB List Query, Offset fails with Number without throwing error but works with String (#15199)
* limit and offest error

* triple call fix

* removing settimeout

* remove fetch calls

* fix: prevent duplicate API calls on TJDB (#15287)

* fix: prevent duplicate API calls on TJDB

* fix: implement caching to prevent duplicate API while selecting TJBD and Workflows

* removed caching logic

---------

Co-authored-by: Rudhra Deep Biswas <rudra21ultra@gmail.com>
Co-authored-by: Sahil Dewangan <123866478+sahil7303@users.noreply.github.com>
2026-02-23 17:25:37 +05:30
Muhsin Shah
37c2e27502 refactor: remove loading state management from Workflows component and update error message in AppEnvironmentUtilService 2026-02-23 14:35:09 +05:30
Muhsin Shah
e7097dbdb8 Merge branch 'lts-3.16' into feature/workflow-versions-and-environments 2026-02-20 15:38:51 +05:30
Muhsin Shah
b98ac2cce5 feat: add resolveEnvironmentId method to handle environment ID resolution with license checks 2026-02-19 19:29:05 +05:30
Muhsin Shah
d77d6ca832 feat: add workflow versioning support in workflows and trigger execution 2026-02-18 19:08:37 +05:30
Akshay
8c9d79c012
Fix: Use loadSync for gRPC filesystem proto loading and add lightweight service discovery (#15225)
* fix(grpcv2): use loadSync for filesystem proto loading to prevent server crash

protobufjs has an unfixed bug (protobufjs/protobuf.js#1098) where
async Root.load() calls resolveAll() outside its try-catch in the
finish() callback. When resolveAll() throws (e.g. unresolvable types),
the error becomes an uncaught exception that crashes the Node.js
process — the Promise never resolves/rejects.

Switch from protoLoader.load() to protoLoader.loadSync() for all
filesystem-based proto loading. With loadSync, resolveAll() errors
propagate as normal synchronous throws caught by existing try-catch
blocks. This is consistent with loadProtoFromRemoteUrl() which
already uses loadSync.

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

* feat(grpcv2): add filesystem proto discovery with lightweight scanning

Add discoverServiceNames and discoverMethodsForServices to support
two-phase service discovery from filesystem proto files. Uses
protobufjs.parse() for lightweight name scanning (~30KB/file) and
only loads full gRPC definitions for selected services, preventing
OOM on large proto directories.

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

* feat(DynamicSelector): add multi-select and autoFetch for grpcv2 filesystem services

Add isMulti and autoFetch props to DynamicSelector. autoFetch triggers
service discovery on mount without requiring a manual button click,
and skips cache persistence to avoid false "Unsaved Changes" prompts.
Multi-select renders services as chips with custom styles.

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

* fix(data-sources): handle non-array elements in resolveKeyValuePair

resolveKeyValuePair assumed all array option elements are sub-arrays
(like metadata key-value pairs). Options like selected_services contain
plain strings, causing arr.map crash during test connection. Guard with
Array.isArray check and fall back to resolveValue for scalar elements.

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

* fix(grpcv2): require service selection for filesystem mode in query manager

Filesystem mode without selected services would fall back to full
proto discovery (loading every file), defeating the purpose of the
two-phase discovery. Now shows an error asking the user to select
services in the datasource config instead.

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

* fix(grpcv2): require selected services for filesystem test connection

Test connection in filesystem mode now validates that at least one
service is selected and uses a selected service for the connectivity
check instead of picking an arbitrary one from the proto directory.

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

* fix(grpcv2): simplify filesystem test connection to validate proto parsing

Test connection for filesystem mode now just validates that proto files
can be parsed and services discovered — no service selection required.
Removes the meaningless waitForReady check which only tested TCP
connectivity without validating anything about the proto definitions.

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

* refactor(grpcv2): remove filesystem branch from discoverServices

Filesystem mode never flows through discoverServices — it uses the
two-phase discoverServiceNames + discoverMethodsForServices path.
Remove the dead branch and add a comment documenting the filesystem
flow for clarity.

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

* docs(grpcv2): add comment documenting test connection behavior per mode

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

* fix(grpcv2): add TCP connectivity check for filesystem mode test connection

Filesystem mode now falls through to checkFirstServiceConnection (waitForReady)
like reflection and URL modes, instead of returning early after proto parsing.

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

* cleanup(DynamicForm): remove unused snake_case prop aliases for isMulti and autoFetch

No plugin manifest uses is_multi or auto_fetch — the gRPC v2 manifest
(the only consumer of these props) uses camelCase exclusively, and there
is no transformation layer in the pipeline.

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

* fix(DynamicSelector): suppress noAccessError flash during loading

The no-access warning and red border briefly flashed on page reload
because validateSelectedValue ran with an empty array before the
fetch completed. Gate both on !isLoading so they only appear after
data is actually loaded.

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

* fix(DynamicSelector): skip cache validation for autoFetch on unrelated prop changes

When autoFetch is enabled, cache is never persisted to options (to avoid
"Unsaved Changes"). So every time selectedDataSource changes for
unrelated reasons (e.g. title edit), the cache-checking useEffect finds
no cache and calls validateSelectedValue([]), falsely triggering the
no-access warning. Skip this effect for autoFetch since it has its own
dedicated fetch/validation lifecycle.

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

* fix(grpcv2): remove QueryResult wrapping from plugin invokeMethod returns

grpcv2 plugin methods (discoverServiceNames, discoverMethodsForServices)
were returning QueryResult-wrapped responses which got double-wrapped by
DataSourcesService.invokeMethod, causing GRPCv2Component to crash with
"servicesData.services.map is not a function" when opening filesystem
proto queries.

Plugin invokeMethod now returns raw data (arrays) instead of QueryResult
objects. The server's invokeMethod always wraps with { status: 'ok', data }
consistently. DynamicSelector adds an Array.isArray guard for plugins
that return raw arrays vs { data: [...] }.

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

* fix(DynamicSelector): skip access validation for autoFetch fields

autoFetch fields (e.g. gRPC services) are discovered from proto files,
not OAuth-scoped resources — "no access" warnings don't apply.

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

* refactor(grpcv2): unify service discovery into single getServiceDefinitions entry point

Consolidate discoverServices, discoverServiceNames, and discoverMethodsForServices
into two clear methods: listServices (lightweight name scan for DS config) and
getServiceDefinitions (full method discovery for query editor, all modes).

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

* fix(grpcv2): prevent OOM on filesystem test connection and query fallback

Filesystem test connection no longer parses proto files — just counts
them with fast-glob and checks TCP connectivity via a raw gRPC client.
Query execution fallback after server restart now uses the lightweight
protobufjs.parse() scanner instead of the heavy protoLoader.loadSync()
path. Removes two dead functions (discoverServicesIndividually,
discoverServicesUsingFilesystem).

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

* chore: update version to 3.20.95-lts across all components

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: gsmithun4 <gsmithun4@gmail.com>
2026-02-17 17:52:48 +05:30
Muhsin Shah
6a34f3fa4e Merge branch 'lts-3.16' into feature/agent-node 2026-02-02 13:14:37 +05:30
Akshay
66296cb55a
Feature: Synchronous workflow execution (#15095)
* Feat: Add sync workflow execution toggle with frontend support

Backend changes:
- Add syncExecution flag to CreateWorkflowExecutionDto
- Add queue configuration constants for workflow execution
- Remove timing debug logs from data-queries controller

Frontend changes:
- Add "Sync Execution" toggle to Workflows query editor
- Update queryPanelSlice to handle syncExecution state
- Update workflow_executions service to pass syncExecution flag

Submodule updates:
- server/ee: Sync execution backend implementation
- frontend/ee: Sync execution hook support

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Feat: Add OTEL_LOG_LEVEL env var support for pino logger

Allow explicit log level override in production via OTEL_LOG_LEVEL
environment variable, falling back to NODE_ENV-based defaults.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 17:03:56 +05:30
Muhsin Shah
80260558a0 Merge branch 'lts-3.16' into feature/agent-node 2026-01-30 15:54:54 +05:30
Priyansh Rai
59c941bc82
Feat: GoogleSheets 2.0 Marketplace Plugin (#14813)
* Feat: Dynamic Selector (#14685)

* feat: introduce the dynamic-selector abstracted component with support for caching dependent dropdowns

* feat: introduce fx toggle option to enable fx editor in the dynamic-selector component

* feat: set `fxEnabled` prop default to `false` in DynamicSelector.

* fix(DynamicForm): fix fxEnabled prop handling to support snake_case

* refactor: rename variables and clean code

* refactor: rename cache key from `__default` to `nonDependentCache` in DynamicSelector.

* feat: Simplify dynamic selector data handling by removing transformation logic.

* refactor: simplify DynamicSelector error log by removing data source ID.

* fix: Throw an error when multi-user authentication is enabled but no user ID is found.

* refactor: rename iteration variables for improved readability

* perf: memoize composite dependency key calculation using `useMemo` hook.

* refactor: simplify `isFxMode` state initialization by removing dynamic value checks and `useEffect`

* refactor: remove unused `responsePath` prop from `DynamicForm` component

* refactor(DynamicForm): remove unused `rest` prop from `getElementProps`.

* fix(DynamicForm): fix support for snake and camel case props

* feat: Add support for passing arguments when invoking data source methods.

* Feat/googlesheets-v2 plugin (#2)

* GoogleSheets v2

* Changes in Operations

* feat: introduce the dynamic-selector abstracted component with support for caching dependent dropdowns

* feat: introduce fx toggle option to enable fx editor in the dynamic-selector component

* feat: set `fxEnabled` prop default to `false` in DynamicSelector.

* Error Standarization

* fix(DynamicForm): fix fxEnabled prop handling to support snake_case

* refactor: rename variables and clean code

* refactor: rename cache key from `__default` to `nonDependentCache` in DynamicSelector.

* feat: Simplify dynamic selector data handling by removing transformation logic.

* refactor: simplify DynamicSelector error log by removing data source ID.

* fix: Throw an error when multi-user authentication is enabled but no user ID is found.

* refactor: rename iteration variables for improved readability

* perf: memoize composite dependency key calculation using `useMemo` hook.

* refactor: simplify `isFxMode` state initialization by removing dynamic value checks and `useEffect`

* refactor: remove unused `responsePath` prop from `DynamicForm` component

* refactor(DynamicForm): remove unused `rest` prop from `getElementProps`.

* fix(DynamicForm): fix support for snake and camel case props

* feat: Add support for passing arguments when invoking data source methods.

* feat: Integrate the dynamic-selector component to the googlesheetsv2 datasource

---------

Co-authored-by: Pratush Sinha <pratushsinha619@gmail.com>
Co-authored-by: Pratush <pratush@Pratushs-MacBook-Pro.local>

* fix: correct FxButton import path

* Bug fixes

* ui-fixes

* authenticate button

* authenticate button design

* bug fixes

* Pass ENV ID to DyanamicForm

* refresh token fixed

* added helper

* query error from invoke method

* Fix/Googlesheets v2 bug fixes (#15043)

* fix: reduce font size of googlesheets authorize description

* fix: update labels

* fix: replace legacy googlesheets with v2 in commonly used

* fix: address review comments

* save button (#15035)

* save button

* sheet required

* conditional connect

* authUrl Fixes

* authUrl Query Fix

* dependency fixed (#15083)

* chore: bump version to 3.20.80-lts across all modules

---------

Co-authored-by: Pratush Sinha <pratushsinha619@gmail.com>
Co-authored-by: Pratush <pratush@Pratushs-MacBook-Pro.local>
Co-authored-by: Ganesh Kumar <ganesh8056234@gmail.com>
Co-authored-by: Rudhra Deep Biswas <rudra21ultra@gmail.com>
Co-authored-by: abhijeet760 <abhijeet@tooljet.com>
Co-authored-by: Rudhra Deep Biswas <98055396+rudeUltra@users.noreply.github.com>
Co-authored-by: Sahil Dewangan <123866478+sahil7303@users.noreply.github.com>
Co-authored-by: gsmithun4 <gsmithun4@gmail.com>
2026-01-29 22:00:29 +05:30
Muhsin Shah
abad2dafb3 Merge branch 'lts-3.16' into feature/agent-node 2026-01-28 13:08:40 +05:30
Kavin Venkatachalam
d0b7c3ca3b
chore: Viewer isolation (#14658)
* update submodule commit for server

* Fix: App history timeline UI in left sidebar

* Fix: App history entry options menu UI

* Fix: App history rename modal UI

* Fix: App history restore modal UI

* Feat: Implement server-sent events for app history updates and add authentication guard

* Remove all the unused logic from inside the store

* Fix: Minor UI change

* Fix: Added a loader

* Update submodule references

* Implemented flow to prevent full reload on restoring history

* Fix: Minor UI issue for history options menu

* feat: Add pushHistoryEntry method to appHistoryStore

* feat: Implement history entry limit in appHistoryStore

* Fix: Horizontal page menu minor enhancements

* feat: add migration for app_history table and update entity structure

* feat: refactor AppHistory module imports and add new services and guards

* Fix: Vertical page menu minor enhancements

* feat: add stream history feature and update related permissions and constants

* feat: add AppStateRepository to AppHistoryModule imports and providers

* feat: add NameResolverRepository to AppHistoryModule imports and providers

* feat: implement NameResolverRepository and NameResolverService for component and page name resolution

* feat: remove QueueHistoryIntegrationService and update AppHistoryModule to reflect changes

* feat: update AppHistoryModule and AppHistoryRepository with new methods and refactor imports

* feat: refactor AppHistoryModule and related services to streamline name resolution and history capture

* feat: add AppStateRepository and HistoryQueueProcessor, refactor AppStateAggregatorService to utilize repository methods

* feat: rename methods in AppStateRepository for clarity and update AppStateAggregatorService to reflect changes

* feat: refactor history capture logic to use synchronous execution and improve error handling across services

* Fix: Mobile view page menu UI enhancements

* feat: enhance ability guards and repository methods for app history validation

* Update submodule references

* Migrate to shadcn sidebar component

* Fix: Components not getting pasted at correct position if user scrolled and pasted inside container components

* Fix: Group components not getting pasted at correct position horizontally inside container components

* POC for removing overlap prevention logic if not enough space present,  incase user clicks somewhere to respect click position

* Update frontend/src/AppBuilder/AppCanvas/Container.jsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* feat: enhance AppHistoryModule registration with isMainImport flag

* feat: update settings method to queue history capture after successful update

* chore: update subproject commit reference in frontend/ee

* feat: add function to delete app history for structural migrations

* Refactor imports and enhance code organization across multiple files

- Updated import paths to reflect the new directory structure in TooljetDatabase and AppBuilder components.
- Consolidated utility functions in appUtils.js, removing redundant code and improving readability.
- Enhanced error handling and state management in dataQueriesStore and resolverStore.
- Added Bundle Analyzer plugin to webpack configuration for better performance insights.
- Improved chunking strategy in webpack to optimize loading of libraries and components.
- Refactored ErrorBoundary imports to maintain consistency across UI components.

* feat: enhance UI components with new icons and styling adjustments

* refactor: remove unused components and icons from QueryManager

- Deleted QueryManagerHeader component and its associated logic.
- Removed SuccessNotificationInputs component and its functionality.
- Eliminated Transformation component and related code.
- Deleted BreadcrumbsIcon, CreateIcon, PreviewIcon, RenameIcon, RunIcon, and ToggleQueryEditorIcon.
- Updated imports in appUtils.js to reflect new icon paths.

* Refactor editorHelpers and utils: Remove unused functions and imports, streamline background update logic, and adjust state handling. Comment out or delete handleReferenceTransactions and related logic in various stores to simplify data flow and improve maintainability.

* Refactor queryPanelStore and storeHelper by commenting out unused imports and code. This cleanup improves code readability and maintainability.

* revert: Reverted the lazy loading changes

* revert: Reverted the changes on App & AppRoute

* Fix: Inside side effects, get the correct canvas element, disable page scrolling and reposition modal container when modal is opened

* Fix: Use the side effects when modal is opened and closed

* Update submodule references

* fix: Corrected zustandDevTools enabled option logic

* update ee-frontend submodule ref

* Enhance: Vertical page menu default styles

* chore: merged with lts

* chore: moved components from Editor to AppBuilder folder

* chore: cleaned up the appbuilder imports

* chore: update subproject commit reference

* update submodule ref

* Enhance: Horizontal page menu default styles

* fix: Global search for multiselect column

* Fix: More button on pages overflow is getting cropped and remove unnecessary calculations related to it

* Refactor page menu code

* Integrate shadcn navigation menu component for horizontal page menu

* Update submodule ref

* update submodule ref

* Fix: Minimum width of the popup in horizontal page menu

* Fixed UI issues

* Removed commented code

* Removed wrapper and unwanted code

* Fix: Minor page menu bugs inside Editor

* Fix: popover overflow issue and other minor bugs

* Remove unnecessary package.json change

* chore: fix import path casing for RealTimeEditor

* Fix: Grid resizing issue and component selector overflow

* Fix: Increased transition duration to 200

* Removed the classname change

* Fix: Scrollbar visible in viewer in vertical page menu

* Fix: Remove arbitrary variant chains since not supported in Tailwind v3 to fix animations in horizontal page menu

* chore: update subproject commits for frontend and server

* Refactored code

* Update ee-frontend submodule reference

* Removed leading and trailing icon width

* Refactor page menu styling part to make it reusable for mobile view

* Integrate Shacn Sidebar component in page menu for mobile view

* Update submodule references

* fix: merge issues and minor bugs

* Update frontend/src/_styles/pages-sidebar.scss

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* update submodule ref

* fixed: custom validation working for dropdown inside the listview

* update submodule references

* Fix: Broken app logo in editor incase app logo url is incorrect

* Fix: Default styles

* update submodule reference

* Fix: Implement changes for legacy modal as well

* Fix: Change state logic to dom manipulation logic on canvas scroll to prevent unnecessary re-renders

* Fix: Change default border color to cc-Border/weak

* Fix: Remove max width on overflow menu in horizontal page menu and prevent right sidebar to open on toggling page groups in overflow menu

* Fix: Box shadow should only be visible for horizontal page menu only when canvas is scrolled and not on top

* Update submodule references

* Feat: Add support for icon in modal trigger

* Update frontend/src/AppBuilder/Widgets/ModalV2/ModalV2.jsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update frontend/src/AppBuilder/Widgets/ModalV2/helpers/stylesFactory.js

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* chore: update subproject commit reference in frontend/ee

* refactor: clean up controller methods and remove unused streamHistory and getEvents methods

* chore: update subproject commit reference in frontend/ee

* update submodule references

* Fix: Scrollbar behaviour in vertical page menu

* Fix: Group closes on selecting a page on vertical page menu

* Remove log

* feat: Add RootRouter for bundle isolation and viewer routing

- Introduced RootRouter component to handle route splitting for viewer isolation.
- Created ViewerApp component to manage viewer-specific routes and logic.
- Removed BrowserRouter from App.jsx and integrated routing into RootRouter.
- Updated package.json to include madge for circular dependency checks.
- Refactored App.jsx to remove viewer-related imports and routes.
- Moved useConfirm hook to a new file for better organization.
- Updated various components to reflect new import paths and structure.
- Enhanced webpack configuration for improved chunk splitting and performance.
- Added new directories for future feature development under src/v2.

* feat: Add scripts to check bundle size and circular dependencies

* feat: Refactor to use dynamic imports for edition-specific components and helpers

* fix: update BoundedBox widget styles and fix class names; add datepicker styles

* feat: add permission checks based on selected data source scope in QueryCard component

* fix: enhance error handling in streamHistoryUpdates and update subproject reference

* fix: fixed the bug on app history in capturing the query deletion

* fix: Fixed unknown component issue while adding an event in query and pages. Added resolveEntityName method to handle entity name resolution for components, queries, and pages

* feat: Add captureSettingsUpdateHistory method to log app version settings updates

* fix: pageSettings were not properly restored while restoring the app history and version change

* fix: Enhance settings update history capture with action type differentiation

* feat: Optimize layout updates by batching component layout changes

* fix: Prevent redundant canvasHeight updates when the value is unchanged

* chore: Added script & logic for view parsed and gzip bundle

* Perf: Reduces main chunk size by almost 140KB, hence reducing overall bundle size

* chore: submodule update (Perf: reduces main chunk size by almost 220KB, hence reducing overall bundle size)

* fix: update entrypoint script to use ce-preview.sh for PostgreSQL initialization

* Perf: Extract CSS from JS bundle to allow css minification and removal of comments in production bundle

* style: Update padding and spacing in app history styles for improved layout

* feat: Implement lazy loading for editor-only components to optimize viewer bundle size

* chore: Update subproject reference to latest commit

* chore: Update subproject commit reference for frontend/ee

* chore: Update subproject commit references for frontend and server

* Fix: update hover effect for app name display in EditAppName component

* Fix: remove redundant darkMode prop from FormField component

* fix: add !important to primary color for rc-slider track and handle

* feat: implement batching for form component updates and layout changes

* feat: enhance form component handling with batching and parent ID extraction

* fix: removed some of the barrel imports

* chore: Update subproject reference to latest commit

* Update submodule references

* Fix: Page of type app or url gets converted to default page on app import

* feat: enhance page cloning with history capture functionality

* fix: optimize parent change detection to prevent unnecessary batch updates during drag operations

* feat: optimize query saving logic to skip unnecessary updates for name changes

* Fix: Group not selected after nested page selection until hovered in horizontal menu

* Revert "Revert "[refactor]: Fix leftsidebar on opening disturbing the scroll""

This reverts commit d712c47f9c.

* Fix: Navigation menu disappears when view switched between desktop and mobile view in editor

* update ee-server submodule ref

* update submodule references

* Fix: Icon alignment issue

* feat: implement bulk creation of event handlers and optimize component event handling

* chore: update subproject commit reference in frontend/ee

* Revert "POC for removing overlap prevention logic if not enough space present,  incase user clicks somewhere to respect click position"

This reverts commit 8aec525e9a.

* feat: disable client overlay in webpack configuration

* update the submodule refs

* update submodule refs

* update submodule reference for server/ee

* refactor: rename `defaultDataSources` prop to `staticDataSources` in `DataSourceSelect` component.

* update submodule refs

* Merge pull request #14663 from ToolJet/feature/viewer-isolation-and-bundle-optimization

Perf: lazy load components not required on viewer page and widgets with bigger external dependencies

* refactor: change exports to default for CodeEditor, ColorPicker, and Table components

* feat: add loading spinner to PreviewSettings and update loading fallback in RootRouter

* feat: lazy load jsPDF and jspdf-autotable to optimize bundle size and improve performance

* feat: replace Tabler icons with dynamic loading to optimize bundle size and improve performance

* feat: add AppHistoryStreamService to manage app history streaming

* update submodule reference for server/ee

* update submodule reference for server/ee

* update submodule reference for server/ee

* chore: update submodule reference for frontend/ee to latest commit

* fix: handle default icon for home page in RenderPage component

* feat: implement SuspenseCountProvider and TrackedSuspense for handling the onLoad queries for lazy widgets

* feat: add SuspenseLoadingOverlay for improved loading state handling in AppCanvas while components are lazy loaded

* refactor: simplify scrolling logic in useEnableMainCanvasScroll and remove unnecessary state

* fix: added missed import of `DynamicHeightInfo` in `ConfigHandle` component

* fix: improve animation handling for TablerIcon component and clean up suspense fallback

* feat: implement viewer isolation for embedded apps routing

* fix: Map MODULE type to APP permissions in FeatureAbilityGuard

* Revert "fix: Map MODULE type to APP permissions in FeatureAbilityGuard"

This reverts commit ccb53f8d89.

* fix: Exclude MODULE type apps from environment access validation

* fix: Add deferCheck prop to SuspenseCountProvider for improved lazy loading handling to support modules

* chore: update subproject commits for frontend and server components

* chore: update subproject commit reference in server/ee

* chore: added logs to print the pat

* Revert "chore: added logs to print the pat"

This reverts commit d0c075f148.

* chore: update version to 3.20.76-lts

---------

Co-authored-by: devanshu052000 <devanshu.rastogi05@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: manishkushare <kushare.manish9@gmail.com>
Co-authored-by: Nishidh Jain <nishidhjain909@gmail.com>
Co-authored-by: adishM98 Bot <adish.madhu@gmail.com>
Co-authored-by: Johnson Cherian <johnsonc.dev@gmail.com>
Co-authored-by: Nishidh Jain <61869195+NishidhJain@users.noreply.github.com>
2026-01-23 17:14:55 +05:30
Muhsin Shah
bdb57ffa5b Merge branch 'lts-3.16' into feature/agent-node 2026-01-23 02:26:47 +05:30
Muhsin Shah
e2fc025aee feat: update agent node identifiers and enhance logging configuration 2026-01-23 01:12:07 +05:30
Akshay
25261d70f2
Refactor: gRPC safe proto load (#14233)
* refactor: failsafe gRPC service discovery with file loads

* refactor: search only service names

---------

Co-authored-by: gsmithun4 <gsmithun4@gmail.com>
2026-01-19 21:16:16 +05:30
Muhsin Shah
25d746eb72 agent-node-edge-style 2026-01-12 12:29:28 +05:30
Ganesh Kumar
37151b01f1
Hotfix: Query operation becomes empty in TJDB operation (#14881)
* fix for query operation becomes empty in TJDB operation

* bump version to 3.20.63-lts across all components

---------

Co-authored-by: gsmithun4 <gsmithun4@gmail.com>
2025-12-31 18:27:51 +05:30
Muhsin Shah
2143d4189f Merge branch 'lts-3.16' into feature/agent-node 2025-12-11 14:34:19 +05:30
Johnson Cherian
ea82f7b31c
Release: Appbuilder Sprint 19 (#14671)
* feat: refactor AppHistory module imports and add new services and guards

* Fix: Vertical page menu minor enhancements

* feat: add stream history feature and update related permissions and constants

* feat: add AppStateRepository to AppHistoryModule imports and providers

* feat: add NameResolverRepository to AppHistoryModule imports and providers

* feat: implement NameResolverRepository and NameResolverService for component and page name resolution

* feat: remove QueueHistoryIntegrationService and update AppHistoryModule to reflect changes

* feat: update AppHistoryModule and AppHistoryRepository with new methods and refactor imports

* feat: refactor AppHistoryModule and related services to streamline name resolution and history capture

* feat: add AppStateRepository and HistoryQueueProcessor, refactor AppStateAggregatorService to utilize repository methods

* feat: rename methods in AppStateRepository for clarity and update AppStateAggregatorService to reflect changes

* feat: refactor history capture logic to use synchronous execution and improve error handling across services

* Fix: Mobile view page menu UI enhancements

* feat: enhance ability guards and repository methods for app history validation

* Update submodule references

* Migrate to shadcn sidebar component

* plan

* Fix: Components not getting pasted at correct position if user scrolled and pasted inside container components

* Fix: Group components not getting pasted at correct position horizontally inside container components

* POC for removing overlap prevention logic if not enough space present,  incase user clicks somewhere to respect click position

* Update frontend/src/AppBuilder/AppCanvas/Container.jsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* modules and customGroup

* feat: enhance AppHistoryModule registration with isMainImport flag

* feat: update settings method to queue history capture after successful update

* chore: update subproject commit reference in frontend/ee

* feat: add function to delete app history for structural migrations

* Refactor imports and enhance code organization across multiple files

- Updated import paths to reflect the new directory structure in TooljetDatabase and AppBuilder components.
- Consolidated utility functions in appUtils.js, removing redundant code and improving readability.
- Enhanced error handling and state management in dataQueriesStore and resolverStore.
- Added Bundle Analyzer plugin to webpack configuration for better performance insights.
- Improved chunking strategy in webpack to optimize loading of libraries and components.
- Refactored ErrorBoundary imports to maintain consistency across UI components.

* feat: enhance UI components with new icons and styling adjustments

* refactor: remove unused components and icons from QueryManager

- Deleted QueryManagerHeader component and its associated logic.
- Removed SuccessNotificationInputs component and its functionality.
- Eliminated Transformation component and related code.
- Deleted BreadcrumbsIcon, CreateIcon, PreviewIcon, RenameIcon, RunIcon, and ToggleQueryEditorIcon.
- Updated imports in appUtils.js to reflect new icon paths.

* Refactor editorHelpers and utils: Remove unused functions and imports, streamline background update logic, and adjust state handling. Comment out or delete handleReferenceTransactions and related logic in various stores to simplify data flow and improve maintainability.

* Refactor queryPanelStore and storeHelper by commenting out unused imports and code. This cleanup improves code readability and maintainability.

* builder roggle

* role name

* revert: Reverted the lazy loading changes

* revert: Reverted the changes on App & AppRoute

* Fix: Inside side effects, get the correct canvas element, disable page scrolling and reposition modal container when modal is opened

* Fix: Use the side effects when modal is opened and closed

* Update submodule references

* struct

* fix

* sus

* field fix

* create app btn

* fix: Corrected zustandDevTools enabled option logic

* module visible

* refactor: update license validation logic and improve feature access checks

* app module

* feat: Added modules support for public apps

* update ee-frontend submodule ref

* Enhance: Vertical page menu default styles

* refactor: migrate license management to a new store and update related components

* workflow enabled

* feat: integrate license validation into Viewer component and remove deprecated license check

* Revert "feat: integrate license validation into Viewer component and remove deprecated license check"

This reverts commit b4b5218079.

* Revert "refactor: migrate license management to a new store and update related components"

This reverts commit cd2936bb12.

* chore: update subproject commit reference in server/ee

* chore: merged with lts

* chore: moved components from Editor to AppBuilder folder

* chore: cleaned up the appbuilder imports

* refactor: update license checks in PageSettingsTab components to use appPermissionPages feature flag

* refactor: update license checks in QueryCardMenu and Inspector components to use appPermission feature flags

* chore: update subproject commit reference

* update submodule ref

* Enhance: Horizontal page menu default styles

* fix: Global search for multiselect column

* Fix: More button on pages overflow is getting cropped and remove unnecessary calculations related to it

* Refactor page menu code

* Integrate shadcn navigation menu component for horizontal page menu

* Update submodule ref

* refactor: add license checks for page, query, and component permissions in app-permissions feature configuration

* chore: update subproject commit reference in server/ee to latest version

* chore: update subproject commit reference in server/ee to latest version

* update submodule ref

* Fix: Minimum width of the popup in horizontal page menu

* Fixed UI issues

* Removed commented code

* Removed wrapper and unwanted code

* Fix: Minor page menu bugs inside Editor

* Fix: popover overflow issue and other minor bugs

* Remove unnecessary package.json change

* chore: fix import path casing for RealTimeEditor

* Fix: Grid resizing issue and component selector overflow

* Fix: Increased transition duration to 200

* Removed the classname change

* Fix: Scrollbar visible in viewer in vertical page menu

* Fix: Remove arbitrary variant chains since not supported in Tailwind v3 to fix animations in horizontal page menu

* chore: update subproject commits for frontend and server

* Refactored code

* Update ee-frontend submodule reference

* Removed leading and trailing icon width

* chore: update subproject commit reference in server/ee to latest version

* Refactor page menu styling part to make it reusable for mobile view

* Integrate Shacn Sidebar component in page menu for mobile view

* Update submodule references

* fix: merge issues and minor bugs

* Update frontend/src/_styles/pages-sidebar.scss

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* update submodule ref

* fixed: custom validation working for dropdown inside the listview

* update submodule references

* Fix: Broken app logo in editor incase app logo url is incorrect

* Fix: Default styles

* update submodule reference

* Fix: Implement changes for legacy modal as well

* Fix: Change state logic to dom manipulation logic on canvas scroll to prevent unnecessary re-renders

* Fix: Change default border color to cc-Border/weak

* Fix: Remove max width on overflow menu in horizontal page menu and prevent right sidebar to open on toggling page groups in overflow menu

* Fix: Box shadow should only be visible for horizontal page menu only when canvas is scrolled and not on top

* Update submodule references

* Feat: Add support for icon in modal trigger

* Update frontend/src/AppBuilder/Widgets/ModalV2/ModalV2.jsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update frontend/src/AppBuilder/Widgets/ModalV2/helpers/stylesFactory.js

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* chore: update subproject commit reference in frontend/ee

* refactor: clean up controller methods and remove unused streamHistory and getEvents methods

* chore: update subproject commit reference in frontend/ee

* update submodule references

* Fix: Scrollbar behaviour in vertical page menu

* Fix: Group closes on selecting a page on vertical page menu

* Remove log

* fix: update BoundedBox widget styles and fix class names; add datepicker styles

* feat: add permission checks based on selected data source scope in QueryCard component

* fix: enhance error handling in streamHistoryUpdates and update subproject reference

* fix: fixed the bug on app history in capturing the query deletion

* fix: Fixed unknown component issue while adding an event in query and pages. Added resolveEntityName method to handle entity name resolution for components, queries, and pages

* feat: Add captureSettingsUpdateHistory method to log app version settings updates

* fix: pageSettings were not properly restored while restoring the app history and version change

* fix: Enhance settings update history capture with action type differentiation

* feat: Optimize layout updates by batching component layout changes

* fix: Prevent redundant canvasHeight updates when the value is unchanged

* style: Update padding and spacing in app history styles for improved layout

* chore: Update subproject commit reference for frontend/ee

* chore: Update subproject commit references for frontend and server

* Fix: update hover effect for app name display in EditAppName component

* Fix: remove redundant darkMode prop from FormField component

* fix: add !important to primary color for rc-slider track and handle

* feat: implement batching for form component updates and layout changes

* feat: enhance form component handling with batching and parent ID extraction

* Update submodule references

* Fix: Page of type app or url gets converted to default page on app import

* feat: enhance page cloning with history capture functionality

* fix: optimize parent change detection to prevent unnecessary batch updates during drag operations

* feat: optimize query saving logic to skip unnecessary updates for name changes

* Fix: Group not selected after nested page selection until hovered in horizontal menu

* Revert "Revert "[refactor]: Fix leftsidebar on opening disturbing the scroll""

This reverts commit d712c47f9c.

* Fix: Navigation menu disappears when view switched between desktop and mobile view in editor

* update ee-server submodule ref

* update submodule references

* Fix: Icon alignment issue

* feat: implement bulk creation of event handlers and optimize component event handling

* chore: update subproject commit reference in frontend/ee

* Revert "POC for removing overlap prevention logic if not enough space present,  incase user clicks somewhere to respect click position"

This reverts commit 8aec525e9a.

* feat: disable client overlay in webpack configuration

* update the submodule refs

* update submodule refs

* update submodule reference for server/ee

* refactor: rename `defaultDataSources` prop to `staticDataSources` in `DataSourceSelect` component.

* update submodule refs

* feat: add AppHistoryStreamService to manage app history streaming

* update submodule reference for server/ee

* update submodule reference for server/ee

* fix: add null check in onHideSideEffects and remove unnecessary !important from sidebar height

* fix: update submodule reference for server/ee

* Fix: Page menu header overflowing the canvas on app mode change

* Fix: Canvas width changes on opening left and right sidebar when page menu is side aligned and opened

* Fix: App logo and name getting wrapped to new line in mobile view

* chore: update submodule to latest commit ddc3418f for server/ee

* Fix: Released app mobile view

* Fix: sidebar footer getting cutoff in mobile view

* chore: update submodules for frontend and server to latest commits

* Update ee-server submodule reference

* Update ee-server submodule reference

* Update data-cy attribute

* Modify cypress test cases

* Update tooltip messages to clarify access restrictions and upgrade prompts (#14720)

* Update tooltip messages to clarify access restrictions for various features, encouraging users to upgrade their plans for additional permissions.

* Update tooltip message in AddNewPageMenu to provide clearer guidance on access restrictions and encourage plan upgrades.

* Refactor permission checks in AddNewPageMenu to use updated feature access flags for adding navigation groups.

* Refactor PageSettingsTab to utilize updated feature access flags for app permissions and navigation group visibility.

* Update tooltip messages across components to consistently indicate "Access restricted" for insufficient permissions, enhancing user clarity on access limitations.

* Refactor PagesSidebarNavigation and MobileHeader to utilize updated feature access flags for header and logo visibility. Introduced hasAppPagesHeaderAndLogoEnabled flag for conditional rendering, enhancing clarity on app page features.

* Remove obsolete dump.rdb file from the plugins directory, streamlining project structure.

* Refactor feature access checks across components to use hasAppPagesAddNavGroupEnabled flag for improved clarity and consistency in navigation group permissions. Removed obsolete license checks and console logs to streamline code.

* UI Fixes  (#14744)

* ui fix

* minor ui fix

* feat: enhance version management with menu handling and fetch tracking (#14745)

* feat: enhance version management with menu handling and fetch tracking

* feat: enhance version management with menu handling and fetch tracking

* update submodule

---------

Co-authored-by: gsmithun4 <gsmithun4@gmail.com>

* Fix: Header not visible in released app in mobile view (#14747)

* Update submodule references for frontend and server components

* Fix: Header and logo not visible in released app once plan expires (#14752)

* Fix: Header and logo not visible in released app once plan expires

* Remove console log

* Fix: Header inside the sidebar too

* chore: bump version to 3.20.53

---------

Co-authored-by: Kavin Venkatachalam <kavin.saratha@gmail.com>
Co-authored-by: devanshu052000 <devanshu.rastogi05@gmail.com>
Co-authored-by: Rudhra Deep Biswas <rudra21ultra@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: manishkushare <kushare.manish9@gmail.com>
Co-authored-by: Nishidh Jain <nishidhjain909@gmail.com>
Co-authored-by: Kavin Venkatachalam <50441969+kavinvenkatachalam@users.noreply.github.com>
Co-authored-by: ajith-k-v <ajith.jaban@gmail.com>
Co-authored-by: Rohan Lahori <64496391+rohanlahori@users.noreply.github.com>
Co-authored-by: vjaris42 <vjy239@gmail.com>
Co-authored-by: gsmithun4 <gsmithun4@gmail.com>
2025-12-11 08:37:09 +05:30
Ganesh Kumar
3a4d7da1c1
Feat: Query level timeout for Postgresql datasource (#14612)
* POstgresql query level timeout implementation

* for query without parameters query level timeout has been updated

* Query level timeout at Run Query endpoint

* label for timeout is updated

* Timeout is applied at run query level

* Method name has been modified

* ref updated

* Error message modified

* Abort controller is abstracted

---------

Co-authored-by: gsmithun4 <gsmithun4@gmail.com>
2025-11-27 19:47:59 +05:30
Midhun G S
d65f960fd2
fix: update documentation links from tooljet.ai to tooljet.com across various components (#14607)
* fix: update documentation links from tooljet.ai to tooljet.com across various components

- Changed documentation links in DataSourcePicker, QueryManagerBody, Transformation, Workflows, QueryCard, Inspector, AddNewPagePopup, and others to point to the new domain.
- Ensured consistency in link formatting and structure.
- Minor code style adjustments for readability.

* chore: update version to 3.20.42-lts across all components
2025-11-24 00:27:53 +05:30
Akshay Sasidharan
7df27c6480 Merge remote-tracking branch 'origin/lts-3.16' into release/worfklows-sprint-14 2025-11-12 14:32:30 +05:30
Medhansh Jain
f5051f533e
updated submodule reference (#14520)
* updated submodule refernce

* Fixed dropdown alignment and tj-db UI
2025-11-06 15:17:05 +05:30
Akshay Sasidharan
cbb4cb9b14 Revert "Fixed dropdown alignment in wf editor (#14392)"
This reverts commit 13f15673e0.
2025-11-06 13:47:43 +05:30
Medhansh Jain
13f15673e0
Fixed dropdown alignment in wf editor (#14392)
* updated Dropdown UI in wf

* updated ee-frontend

* Updated tj-db query input
2025-11-06 11:47:05 +05:30
Nishidh Jain
05fff73cf7 chore: Replace query panel icons with lucid icons 2025-11-04 17:28:36 +05:30
Ganesh Kumar
3ca71143a1 Merge branch 'lts-3.16' into release-lts/marketplace-sprint-13 2025-10-23 18:13:49 +05:30
Priyansh Rai
2d0b8384fe
Docs: add doc links for static data sources (#14175)
* added docs for static data sources

Signed-off-by: thesynthax <kushagra1403@gmail.com>

* fix: update documentation link for ToolJet DB static source

* fix: add margin to doc links

---------

Signed-off-by: thesynthax <kushagra1403@gmail.com>
Co-authored-by: thesynthax <kushagra1403@gmail.com>
2025-10-22 12:13:31 +05:30
medhansh-alt
470f5ae479 fix: code editor for loop nodes 2025-10-14 12:31:24 +05:30
medhansh-alt
8d3e5a99d0 fix: updated code editor UI for runjs and loop nodes 2025-10-14 03:25:42 +05:30
johnsoncherian
c1b11ee16d Merge branch 'lts-3.16' into release/appbuilder-s16 2025-09-29 12:42:05 +05:30
Akshay
ca2e70de82
Fix: gRPC reflection client and adds fuzzy search for gRPC service (#14067)
* refactor: use service descriptor retrieval and pass callOptions

* refactor: remove redundant comments

* refactor:  use sdk methods to get appropriate proto definition on reflection

* fix: changes not save immediately

* fix: improve loading state handling in GRPCv2 component

* feat: add filesystem support for loading proto files

* feat: implement fuzzy search and debounce functionality
2025-09-26 20:30:02 +05:30
Shaurya Sharma
e9a32c9c03 Minor changes 2025-09-26 17:56:37 +05:30
Shaurya Sharma
11ba41c83f Merge conflicts resolved 2025-09-26 12:32:13 +05:30
johnsoncherian
a95f9260f0 Merge branch 'release/appbuilder-s16' into ui-fixes-app-builder 2025-09-26 10:16:20 +05:30
Shaurya Sharma
25cb62b458 Merge branch 'lts-3.16' into feat/listview-table-data-dropdown 2025-09-24 13:06:13 +05:30
Nishidh Jain
6431d01b44 Merge branch 'lts-3.16' of https://github.com/ToolJet/ToolJet into feat/ai-release-v3-with-credits-and-homepage 2025-09-19 17:06:19 +05:30
manishkushare
47bbd81df0 UI bug fixes 2025-09-19 10:01:02 +05:30
Shaurya Sharma
ed07177ee9 Added core data dropdown functionality along with create & select functionality 2025-09-17 23:49:30 +05:30
Kartik Gupta
e6a6a288ca a1 release v3 2025-09-12 15:44:00 +05:30
Srimanitejas123
f7ea317b6f Updated data-cy with review comments 2025-09-11 14:10:20 +05:30
Srimanitejas123
7e30956aa7 Updated jsx with data-cy 2025-09-11 13:02:44 +05:30
Srimanitejas123
57d877c001 Added cypress spec for wf in apps 2025-09-05 16:52:34 +05:30
Srimanitejas123
e317b8e89f added cypress spec for wf with datasource 2025-08-28 17:50:56 +05:30