* feat: Folder permission system
* fix(group-permissions): resolve custom group validation, folder edit check, and UI inconsistencie
* edit folder container && no folder in custom resource
* fix the ui for custom in empty state
* fix: coercion logic for folder permissions
* feat: enhance folder permissions handling in app components
* feat: add folder granular permissions handling in user apps permissions
* feat: implement granular folder permissions in ability guard and service
* feat: improve error handling for folder permissions with specific messages
* feat: enhance EnvironmentSelect component to handle disabled state and improve display logic
* chore: bump ee submodules
* add basic framework to support platform git
* feat: Update permission prop to isEditable in BaseManageGranularAccess component
* chore: bump ee server submodule
* fix: refine folder visibility logic based on user permissions
* feat: enhance MultiValue rendering and styling for "All environments" option
* fix:Uniqueness-of-data-source
* revert folder changes
* fix folder imports
* feat: allow app lazy loading
feat: import all apps of branches
* feat: implement folder ownership checks and enhance app permissions handling
* fix:ui changes
* feat: update WorkspaceGitSyncModal UI
* feat: enhance folder permissions handling for app ownership and actions
* chore: clarify folder creation and deletion permissions in workspace context
* fix: pull commit button & swtich branch visibility
* feat: import app from git repo
* fix: freezed state
* remove reference of activebranchId
* fix linting
* fix: update folder permission labels
* fixed folder permission cases
* fixed css class issue
* fix: datasource UI
* minor fix
* feat: streamline folder permissions handling by removing redundant checks and simplifying access logic
* refactor: made error message consistent
* fix:ui changes and PR fetching on master
* fix: datasource and snapshot creation
* fix: app rendering and stub loading
* fix: add missing permission message for folder deletion action
* refactor: consolidate forbidden messages for folder actions and maintain consistency
* fix: allow pull into current branch
* fix renaming of tags and reload on branch switch
* fix: allow branches import from git
* fix:push or tab removed
* feat: streamline permission handling and improve app visibility logic
* fix: remove default access denial message in AbilityGuard
* fixed all user page functionality falky case
* feat: add workspace-level PR fetch endpoint (returns all repo PRs without app filtering)
* fix: remove app_branch_table
* Fixed profile flaky case
* fixed granular access flaky case
* fix: allow branch creation from tags
* fix: update default branch creation logic to use provider config
* fix: dso and dsv operations on codebase
* fix: constants reloading and refetch org git details on data
* uniquness per branch
* removed comment
* fix: update app version handling and add is_stub column for branch-level tracking
* fix workspace branch backfilling for scoped branches
* added unique constraint - migration
* fix: update app version unique constraint to include branchId for branch-aware handling
* fix: update subproject commit reference in server/ee
* chore: revert package-lock.json
* chore: revert frontend/package-lock.json to main
* removed banner and changed migration
* minor fix
* fix: remove unused import and handle UUID parse error gracefully in AppsUtilService
* fix: update app stub checks to safely access app_versions
* refactor: revert folder operations
* fix: removed branch id logic
* fix: ds migration
* fix encrypted diff logic
* fix: update openCreateAppModal to handle workspace branch lock
* fix: subscriber filtering, freeze priority, meta hash optimization, and co_relation_id backfill
* feat: add script to generate app metadata from app.json files
* fix: meta script
fix: backfilling of co-realtion-ids
* refactor: streamline parameter formatting in workspace git sync adapter methods
* Improves data source handling for workspace git sync
Fixes workspace git sync to properly recognize data sources across branches by improving correlation ID handling and branch-aware data source version creation.
Uses strict equality comparison in deep equal utility to prevent type coercion issues.
Excludes credential_id from data source comparison to prevent unnecessary save button states.
Removes is_active filter from branch data source queries to include all versions for proper synchronization.
* refactor: update branch switching logic and improve error handling for data source creation
* fix: migration order
* 🚀 chore: update submodules to latest main after auto-merge (#15628)
Co-authored-by: gsmithun4 <3417097+gsmithun4@users.noreply.github.com>
* chore: update version to 3.21.8-beta across all components
* fix:import app from device
* fix:ui Edit&launch,folderCopy,branching dropdown in apps and ds
* fix:encrypted helper text on master
* fix: import from git flow
* logs cleanup
* fix:migration-datasource-uniqueness
* fix: app on pull
* chore: update server submodule hash
* fix: corelation-id generation and version naming
* fix: last versions deletion error
fix: no multiple version creation
* fix:ui and toast
* chore: update server submodule hash
* feat: add branch handling for app availability and improve error handling
* fix: update encrypted value handling in DynamicForm and improve workspace constant validation logic
* fix: improve formatting of help text in DynamicForm and enhance error message for adding constants on master branch
* fix: correct version creation and pull in default branch
* chore: update server submodule hash
fix: remove logs from other PR
* fix:data source uniquness at workspace level
* fix: update header component logic for path validation and improve version import handling
* chore: update server submodule to latest commit
* fixed folder modal changes
* fix:failed to create a query error inside apps
* feat: add branchId support for data source versioning in app import/export service
* fix: push & pull of tags and versions
* fix: update subproject commit reference in server/ee
* fix:removed gitSync logic from module rename
* fix:removed switchbranch modal & allowed renaming from masted module&workflow creation
* chore: Update server submodule hash
* fix: change stub button to edit
* refactor/git-sync-remove-modules-workflows
* fix:version name for module and workflo
w
* fix:templet app creation
* fix: add author details for branch
---------
Co-authored-by: gsmithun4 <gsmithun4@gmail.com>
Co-authored-by: Pratush <pratush@Pratushs-MBP.lan>
Co-authored-by: Shantanu Mane <maneshantanu.20@gmail.com>
Co-authored-by: parthy007 <parthadhikari1812@gmail.com>
Co-authored-by: Yukti Goyal <yuktigoyal02@gmail.com>
Co-authored-by: Muhsin Shah <muhsinshah21@gmail.com>
Co-authored-by: Adish M <44204658+adishM98@users.noreply.github.com>
Co-authored-by: gsmithun4 <3417097+gsmithun4@users.noreply.github.com>
Co-authored-by: Parth <108089718+parthy007@users.noreply.github.com>
* 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>
* 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: Xero plugin integration with dynamic-selector (#1)
* Xero Plugin Intergration
* improvement after review comments
* added more Entity
* Au spec sheet update
* after review
* 'xero'
* added latest changes in the xero
* Changes in operations.json
* 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
* feat: Add dynamic tenant selection and fetching for Xero plugin using dynamic-selector component
* 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.
---------
Co-authored-by: Pratush613 <pratushsinha619@gmail.com>
Co-authored-by: Parth <108089718+parthy007@users.noreply.github.com>
Co-authored-by: parthy007 <parthadhikari1812@gmail.com>
* fix: correct FxButton import path
* feat: Implement OAuth token refresh and retry for data sources.
* fix(xero default scopes): ensure offline_access scope for Xero plugin to get refresh_token.
* chore: remove import comment from DynamicSelector
* fix: remove redundant oauth_type field from xero manifest.json
* fix: Update Xero tenant label to use ID.
* fix: use correct dataSourceOptions object for dataSource options in invokeMethod
* feat: persist DynamicSelector's fx mode.
* fix: correct Xero tenant ID display in label.
* fix: update Xero plugin dependencies
* feat: add userId argument to invoke method
* fix: xero getTenants in multi auth enabled environment
* refactor: simplify DynamicSelector caching logic to remove userId caching in multi-auth environments
* fix: remove layout shift when toggling fx editor
* chore: remove obsolete useStore call from DynamicSelector component
* Revert "refactor: simplify DynamicSelector caching logic to remove userId caching in multi-auth environments"
This reverts commit 307e62f48a.
* Revert "chore: remove obsolete useStore call from DynamicSelector component"
This reverts commit a2471a975b.
* feat: Add 'no access' warning to DynamicSelector for multi-user shared environments
* style: Update DynamicSelector button variant from secondary to tertiary.
* fix: trigger Xero OAuth token refresh in run method
* fix: enable token refresh logic in xero plugin
* xero design review changes
* Pass .env
* bug fixes
* refreshtoken (#15107)
* Bugs
* remove webhooks
* openAPiSpec improvements
---------
Co-authored-by: Pratush613 <pratushsinha619@gmail.com>
Co-authored-by: Parth <108089718+parthy007@users.noreply.github.com>
Co-authored-by: parthy007 <parthadhikari1812@gmail.com>
Co-authored-by: Ganesh Kumar <ganesh8056234@gmail.com>
Co-authored-by: Adish M <adish.madhu@gmail.com>
Co-authored-by: Rudhra Deep Biswas <rudra21ultra@gmail.com>
Co-authored-by: abhijeet760 <abhijeet@tooljet.com>
* 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>
* 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
* working on google sheet service account flow
* service account flow logic added
* for service account flow skip the Oauth error flow
* added datamigration to backfill the authentication option for GoogleSheets
* ee commit
* merge commit
* feat: updated openapi operation component
* updated query operation sepctype
* fix: updated query dropdown style
* feat: config dropdown update
* feat: add Gmail plugin with API integration and initial setup
* refactor: enhance type definitions
* refactor: clean up code and refactor variable names
* fix: update Gmail OAuth scope to allow full access to Gmail
* feat: standardize error handling for Gmail plugin
* fix: include oauth_type handling in Gmail plugin for cloud environment
* fix: update spec_url for Gmail operations
* refactor: remove unused fields in gmail manifest.json
* fix: update Content-Type header to application/x-www-form-urlencoded for token requests
* feat: add environment variable prefix for Gmail in OAuth handling
* fix: remove encryption requirement for client_id in Gmail manifest
* fix: update Gmail plugin to use form data for token requests and simplify response handling
* fix: add Gmail to OAuth data sources in DataSourceManager
* fix: encode path parameters in Gmail plugin URL construction
* fix: add back margin to Client ID label in CommonOAuthFields component
* fix: adjust width of input field in RenderParameterFields for better alignment
* fix: set response type to 'json' in requestOptions for Gmail service
---------
Co-authored-by: Devanshu Gupta <devanshuguptaknp@gmail.com>
* ee commit
* merge commit
* feat: updated openapi operation component
* updated query operation sepctype
* feat(ups): add UPS datasource integration with OAuth token generation and API operations
- Implemented the main UPS class for handling API requests and responses.
- Added manifest.json to define the UPS datasource schema and options.
- Created operations.json to specify available UPS API operations using OpenAPI Spec files.
- Defined types for source options, query options, and OpenAPI operations in types.ts.
- Updated plugins.json to include the new UPS integration with metadata.
* fix(ups): standardize error messages for query completion failures
* refactor(ups): replace environment option with base_url for UPS datasource
* refactor(DyamicForm): update label from 'Spec Type' to 'Entity' for clarity
* feat(DynamicForm): select the first operation by default in ApiEndpointInput.jsx
* feat(ups): integrate 'got' for HTTP requests and improve error handling
* fix(ups): replace btoa with Buffer for base64 encoding in authorization header
* feat(ups): enhance testConnection method with error handling and HTTP request using 'got'
* refactor(ups): streamline error handling in run and testConnection methods
* chore(theme): update datasource icon styling to match sizes for marketplace plugins
* fix(ups): enhance error handling in testConnection function to improve UX on the config page
* fix(DynamicForm): initialize computedProps for new data sources; fix unresponsive cancel button for encrypted fields
* Revert "feat(DynamicForm): select the first operation by default in ApiEndpointInput.jsx"
This reverts commit 5d940ceaca.
* fix(manifest): correct label casing for base_url and client_id properties
* fix(Ups): conditionally set Content-Type header based on request method
* fix(DataSourceManager): adjust padding for selected data source images and add targeted class for better scoping
* fix(Ups): update OAuth token request to use form data and set response type to JSON
* fix(Ups): set response type to JSON and adjust response data handling
* fix(UPS): fix unresponsive edit/cancel button on encrypted fields
* Revert "fix(DynamicForm): initialize computedProps for new data sources; fix unresponsive cancel button for encrypted fields"
This reverts commit 8e1b160588.
* fix(ApiEndpointInput): revert operation validation changes
---------
Co-authored-by: Devanshu Gupta <devanshuguptaknp@gmail.com>
* Enhance: Extract the general OAuth flow for plugins [PRE-RELEASE] (#13291)
* Feature: Prometheus plugin (#13161)
* prometheus plugin
* added existing props
* Host and database can be dynamically configured in query builder for PostgreSQL and MySQL data sources (#13163)
* Fix: Postgresql datasource tries to connect via ssl even when ssl toggle is off (#13167)
* The ability to provide a partition key for deleting items in CosmosDB datasource has been enabled (#13166)
* Feature: Ability to configure the database name in Redis datasource (#13165)
* Fix: Avoid setting Content-Type header for requests without body and configure different host for all environments in OpenAPI [PRE-RELEASE] (#13230)
* Send content-type only with body in request
* Persist OpenAPI parameters per operation only
* Configure different host
* Add disable styles to the select input
* Feat: New fields 'client id' and 'client secret' have been introduced in the Slack datasource configuration page in pre-release (#13162)
* Update slack frontend
* Update slack backend to handle custom creds
* Add backfill migrations
* Dynamically change dropdown according to versions
* Change migration file name
* Correctly access scope in chat:write logic
* Extract general OAuth flow
* Render save button correctly
* Update the dropdown labels
* Fix dropdown according to tooljet editions
---------
Co-authored-by: Ganesh Kumar <40178541+ganesh8056@users.noreply.github.com>
Co-authored-by: Akshay Sasidharan <akshaysasidharan93@gmail.com>
* Feat/google calendar plugin pre release (#13361)
* ee commit
* Feature: Prometheus plugin (#13161)
* prometheus plugin
* added existing props
* Host and database can be dynamically configured in query builder for PostgreSQL and MySQL data sources (#13163)
* Fix: Postgresql datasource tries to connect via ssl even when ssl toggle is off (#13167)
* The ability to provide a partition key for deleting items in CosmosDB datasource has been enabled (#13166)
* Feature: Ability to configure the database name in Redis datasource (#13165)
* merge commit
* feat: updated openapi operation component
* Fix: Avoid setting Content-Type header for requests without body and configure different host for all environments in OpenAPI [PRE-RELEASE] (#13230)
* Send content-type only with body in request
* Persist OpenAPI parameters per operation only
* Configure different host
* Add disable styles to the select input
* Feat: New fields 'client id' and 'client secret' have been introduced in the Slack datasource configuration page in pre-release (#13162)
* Update slack frontend
* Update slack backend to handle custom creds
* Add backfill migrations
* Dynamically change dropdown according to versions
* Change migration file name
* Correctly access scope in chat:write logic
* Extract general OAuth flow
* Render save button correctly
* Update the dropdown labels
* feat: added google calendar
* fix: option styling
* fix: removed test connection
* Fix dropdown according to tooljet editions
* fix: updated oauth type
* fix: added env variable helper
* fix: environment fetch
* feat: added default scope
* Remove connect button when multi-auth true
* Make scope configurable
* Hardcode google calendar scope
---------
Co-authored-by: Ganesh Kumar <40178541+ganesh8056@users.noreply.github.com>
Co-authored-by: Akshay Sasidharan <akshaysasidharan93@gmail.com>
Co-authored-by: Parth <108089718+parthy007@users.noreply.github.com>
Co-authored-by: parthy007 <parthadhikari1812@gmail.com>
---------
Co-authored-by: Parth <108089718+parthy007@users.noreply.github.com>
Co-authored-by: Akshay Sasidharan <akshaysasidharan93@gmail.com>
Co-authored-by: Devanshu Gupta <devanshuguptaknp@gmail.com>
Co-authored-by: parthy007 <parthadhikari1812@gmail.com>
* API backend setup for fetching decrypted options object
* Frontend setup to use and fetch decrypted options object
* Debounce validation and include encrypted fields
* Update banners and point back to inputs
* Remove ssl config from connection string in postgresql
* Add support for textarea design component
* Improve conditional requirement logic
* Fix validation banner bugs
* Change schema for airtable
* Change schema for bigquery
* Change schema for mongodb
* API backend setup for fetching decrypted options object
* Frontend setup to use and fetch decrypted options object
* Debounce validation and include encrypted fields
* Update banners and point back to inputs
* Fix toggle and headers to trigger validation on change
* Fix disable state of save button