Commit graph

221 commits

Author SHA1 Message Date
Vijaykant Yadav
23a318d037 fix migration 2026-01-05 11:41:59 +05:30
Vijaykant Yadav
a27f0db5b0 Merge branch 'lts-3.16' into feat/env-permissions 2025-12-31 14:21:47 +05:30
Vijaykant Yadav
0f96288c7e bug fixes 2025-12-29 12:59:54 +05:30
Vijaykant Yadav
7035c19c81 feat: Enhance environment access and preview functionality
- Updated environment toggle styles for better alignment.
- Integrated useLocation hook in DesktopHeader and MobileHeader to manage preview mode based on query parameters.
- Refactored preview settings rendering logic in DesktopHeader and MobileHeader to display based on preview mode.
- Modified useAppData hook to resolve environment based on selected environment or editor environment.
- Enhanced environments and versions slice to check environment access and fallback to safe environments.
- Updated AppCard to conditionally include environment query parameters based on user plan.
- Improved HomePage component to handle app limits and cloning more gracefully.
- Adjusted AppsRoute to manage query parameters based on license validity.
- Refined environment access helper functions for better permission handling.
- Updated various components to ensure consistent styling and functionality.
- Backfilled environment permissions for builder roles in data migration scripts.
- Adjusted server-side app environment service to include user context in initialization.
2025-12-23 21:01:39 +05:30
Shaurya Sharma
67b4722acc
Style enhancements (#14627)
* 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

* 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

* Border weak added to containers

* Added border weak to table and code editor

* 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

* Changed default size of container based components to that of form

* Organized accordians for ModalV2, Form and Container and added divider colors

* Added container styles to some components

* 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

* Reverted default sizes for calendar & kanban and made header title center aligned for form and container

* 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

* Button accordian renamed to trigger button

* Migrations added

* Migrations added

* Submodule update

* Comments resolved

---------

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: Johnson Cherian <johnsonc.dev@gmail.com>
Co-authored-by: Nishidh Jain <nishidhjain909@gmail.com>
Co-authored-by: Kavin Venkatachalam <50441969+kavinvenkatachalam@users.noreply.github.com>
2025-12-19 14:31:49 +05:30
Rupaak Srinivas
c0884b8b45
feat: add show currency flag option (#14690)
* feat: add show currency flag option

* update server config

* migrate showFlag variable

* update import export service

* fix import export service
2025-12-19 14:26:24 +05:30
Vijaykant Yadav
44bd637e4f Merge branch 'lts-3.16' into feat/env-permissions 2025-12-17 10:47:29 +05:30
Vijaykant Yadav
2f4ed001a7 feat: Add environment permissions and UI components for managing access 2025-12-17 10:38:26 +05:30
Midhun G S
bba4f1dcb9
Fix for CE Migration - added environments (#14811)
* refactor: comment out edition check in migration scripts for flexibility

* fix for draft version creation issue

---------

Co-authored-by: rohanlahori <rohanlahori99@gmail.com>
Co-authored-by: Adish M <adish.madhu@gmail.com>
2025-12-15 22:31:31 +05:30
Pratush Sinha
861e717248
MongoDB connection with srv support (#14626)
* MongoDB connection with srv support

* design changes and migration

* changes in design

* fix password field is coming disabled.

* change with save button

* changes in the save button and encrypt

* Changes for mongoDb SRV after Code Review

* migration script

* Changes in the UI

* fixed the db issue in connection

* changes comment removed

* SSl issue resolved

* Review changes made

* editing connection string affects only individual fields

* fixed dataSource Saving in imported apps

* fixed imported apps ds save

---------

Co-authored-by: Pratush <pratush@Pratushs-MacBook-Pro.local>
2025-12-10 15:06:10 +05:30
Rohan Lahori
5bec5a5b12
Feature/draft versioning support (#14284)
* added app_versions fields

* added data migration for backward compatibility

* added ce specific logic

* fixed ce migration (need to dev-test)

* moved to data migration

* migration changes

* added endpoint to create draft version

* backend changes

* added draft to app_import scenario

* added version description

* minor changes (needs improvement)

* fixed breaking dropdown in editor

* updated submodule commits

* revert package.json

* revert ui not used changes

* submodule changes

* reverting non used files

* ui changes

* ui changes

* ui changes

* ui changes

* ui changes

* copywriting changes

* ui changes

* ui changes

* edit version modal changes

* ui integration changes

* added button solid and removed unused css

* removed commented code from create version modal

* updated button size to use large

* ui changes

* draft version modal changes

* added sub-module commits to main

* draft version endpoint changes

* ui changes for draft version modal

* fix breaking ui

* ui changes for banner

* minor ui changes

* remove scss changes from themes file

* removed unused components (cleanup)

* removed unused components (pr cleanup)

* draft version changes

* create version modal changes

* canvas banner fixes

* comment creation logic

* refactor: version dropdown

* update endpoint changes

* fix: promote logic

* update submodule

* fix: released version and create version modal

* fix draft version creation

* minor ui changes

* minor backend fixes

* tooltip changes

* added all components in same folder

* added minor comments

* import fixes

* refactor files

* fix: overlay issues

* fix: on version creation

* fix ce bugs

* bug fixes

* bug fixes

* bug fixes

* bug fixes

* base merge

* feat: draft versioning support with UI enhancements and backend adjustments

- Updated AppCanvas to conditionally render AppCanvasBanner based on edit mode.
- Enhanced CreateDraftVersionModal to handle version selection and creation logic.
- Modified CreateVersionModal to streamline version creation process and handle commits.
- Improved ReleaseConfirmation to include development versions in release context.
- Refactored CreateDraftButton and VersionDropdownItem for better UI consistency and dark mode support.
- Updated VersionManagerDropdown to manage draft versions and improve version selection logic.
- Enhanced version switcher and promote/release buttons with dark mode styling.
- Adjusted server-side features and constants to support new draft versioning capabilities.
- Updated styles across components for better visual consistency and responsiveness.

* minor fixes

* rebase

* merge base

* update submodule

* Add data-cy attribute for draft version components

* Update cypress test cases for draft version feature

* Update failing test cases

* Update draft version test cases

* Skip older flow

* migration changes

* migration fixes

* Update the failed test cases

* removed multiple api calls

* fix: version set on draft creation

* fixes

* fix: version update on save version

* fixes

* name fix

* fix version lock banner styling

* bump version to 3.20.50-lts across all components

---------

Co-authored-by: Vijaykant Yadav <vjy239@gmail.com>
Co-authored-by: ajith-k-v <ajith.jaban@gmail.com>
Co-authored-by: gsmithun4 <gsmithun4@gmail.com>
2025-12-05 22:13:00 +05:30
Siddharth Pundir
cb06e311e0
Implemented group sync in for SAML and also changed border weak in default tooljet theme on platform (#14574)
* Handling custom scope from UI instead of env and data migration for it

* Implemented group sync in UI for SAML and also changed the border weak for default ToolJet theme on platform.

* Restrict SAML config updates to 'saml' only

* Fix the color of Appname for the dark mode

* Fixing migration issue

* Removed the consoles from migrations

* Minor fixes for save changes

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

---------

Co-authored-by: gsmithun4 <gsmithun4@gmail.com>
2025-11-17 22:46:15 +05:30
Parth
9cb2baf1b3
Fix: Casing issue of grant-type in SSO configs (#14545)
* fix:rename grant_type to grantType in SSO configs

* 🚀 chore: update version to 3.20.35-lts across all components

---------

Co-authored-by: gsmithun4 <gsmithun4@gmail.com>
2025-11-10 23:51:40 +05:30
Parth
346e26867f
Feat: OIDC PKCE flow (#14407)
* feat: Add client config interface

* chore: update submodule hashes

* refactor: Fix interface name

chore: submodule hashes

* chore: Add data migration for adding grant-type

* fix: Change height & fontSize of dropdown

* chore: update submodule hash

* chore: update submodule hash

* resolve conflicts

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

---------

Co-authored-by: gsmithun4 <gsmithun4@gmail.com>
2025-10-31 15:29:20 +05:30
Parth
03505b0174
fix: token headers & client-auth dropdown (#14082) 2025-10-22 15:19:20 +05:30
Ganesh Kumar
4ede7110d6
Hotfix: Microsoft graph datasource refresh token flow (#14344)
* microsoft graph refresh token flow

* Handled unauthorised error

* marketplace dev mode will be picked from public config

* for microsoft graph when datasource is updated clear the token details

* added migration to backfill values for scope in Microsoft graph datasource

* version bump
2025-10-17 22:11:19 +05:30
Ganesh Kumar
0f00162fcc
Feat: Support for service account authentication in google sheet datasource (#14209)
* 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
2025-10-08 14:34:05 +05:30
Johnson Cherian
04135e93ae
Merge pull request #14130 from ToolJet/feat/circular-progressbar
Circular Progressbar Revamp
2025-09-26 12:29:30 +05:30
Shaurya Sharma
376191ec00 Merge conflicts resolved 2025-09-26 12:29:00 +05:30
johnsoncherian
d79544caf8 Merge branch 'lts-3.16' into release/appbuilder-s16 2025-09-26 12:26:54 +05:30
devanshu052000
62b08f2fc7 Merge branch 'release/appbuilder-s16' into enhance/kanban-component 2025-09-25 13:41:49 +05:30
johnsoncherian
0cd691774e Merge branch 'lts-3.16' into release/appbuilder-s16 2025-09-25 13:08:51 +05:30
devanshu052000
1709f8008b Merge branch 'workflow/release-branch' into feat/wf-response-code 2025-09-25 12:24:52 +05:30
devanshu052000
8b2a02d04e Merge branch 'lts-3.16' into enhance/kanban-component 2025-09-24 10:28:00 +05:30
devanshu052000
fdbe6e9077 Merge branch 'lts-3.16' into feat/wf-response-code 2025-09-23 11:10:18 +05:30
devanshu052000
6d09f9d2ee Fix: Change 'General' property heading to 'Additional Actions' 2025-09-23 10:18:13 +05:30
Johnson Cherian
9c09f40d46
Merge pull request #14015 from ToolJet/sprint-16/components-enhancement
Enhances HTML, Custom Component and Table components
2025-09-22 13:19:15 +05:30
Shaurya Sharma
0dc06edd01 Migration added 2025-09-21 22:55:58 +05:30
Midhun G S
9ec60edada
Merge branch 'lts-3.16' into feat/ai-release-v3-with-credits-and-homepage 2025-09-19 21:16:51 +05:30
Midhun G S
1c4c006da8
Merge pull request #14057 from ToolJet/debug/v3.16.27-lts-beta
refactor: enhance canActivate method in AbilityGuard for improved error handling and logging
2025-09-19 20:37:49 +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
Rudra deep Biswas
005f3a2c50 isValid check and copywriting 2025-09-19 15:10:44 +05:30
devanshu052000
fdf6c23539 Merge branch 'lts-3.16' into feat/wf-response-code 2025-09-19 04:22:27 +05:30
gsmithun4
f40be5b1b5 feat(logging): integrate transaction logging across various guards and services
- Updated `AbilityGuard` to utilize `TransactionLogger` for logging execution time and errors.
- Enhanced `ResponseInterceptor` to include transaction metadata in logs.
- Modified `QueryAuthGuard`, `ValidateQueryAppGuard`, and `ValidateQuerySourceGuard` to log completion times and transaction IDs.
- Introduced `TransactionLogger` service for structured logging with transaction context.
- Added transaction ID and route information to request context in `RequestContextMiddleware`.
- Updated `JwtStrategy` to log validation completion times.
- Refactored logging configuration in `AppModuleLoader` to support pretty printing in non-production environments.
- Removed console logs in favor of structured logging for better traceability.
2025-09-19 02:08:49 +05:30
Rudhra Deep Biswas
376b1adb99
ADD adpi key to selfhost customer (#14111) 2025-09-18 16:31:06 +05:30
Rudra deep Biswas
9609d46721 Merge branch 'feat/ai-release-v3-with-credits' of https://github.com/ToolJet/ToolJet into fix/api-credits 2025-09-18 03:14:33 +05:30
Rudra deep Biswas
b1604b9ea9 type fixes 2025-09-17 11:21:33 +05:30
Muhsin Shah C P
867b1a21be feat: wrap migration logic in dbTransactionWrap for better error handling 2025-09-16 17:33:13 +05:30
Muhsin Shah C P
b96d07c7e8 refactor: changed util function call to direct db operations 2025-09-16 17:17:59 +05:30
Muhsin Shah C P
db9987724a feat: add migration for workflow granular permissions to existing admin groups 2025-09-16 13:40:50 +05:30
Rudra deep Biswas
f751bb3baf migration and css changes 2025-09-15 12:38:23 +05:30
devanshu052000
ec2c496596 Merge branch 'lts-3.16' into feat/wf-response-code 2025-09-12 19:19:01 +05:30
Rudra deep Biswas
4105dfec12 Migration Changes 2025-09-10 18:12:35 +05:30
Vijaykant Yadav
0139b4795c Adds box shadow styling support to HTML widget 2025-09-10 00:55:30 +05:30
Vijaykant Yadav
5eb3a0b6da Migrates Html component visibility from styles to properties 2025-09-10 00:32:17 +05:30
Nakul Nagargade
f35b738df0 Merge branch 'release/appbuilder-sprint-15' into feat-star-rating 2025-09-08 18:41:49 +05:30
devanshu052000
ddae10758d Fix: Implement batch processing in migration and show progress 2025-09-08 02:34:24 +05:30
Nakul Nagargade
211a9f8bd4 fix migration 2025-09-03 17:06:43 +05:30
Nakul Nagargade
ad400c56db Add migrations 2025-09-02 11:28:59 +05:30
Vijaykant Yadav
913c1809c3 Refactors Tags component with improved styling and events
Consolidates data property configuration by removing redundant schema field and simplifying options structure

Updates default color palette to use modern semi-transparent backgrounds with matching text colors for better visual consistency

Adds component lifecycle events (setVisibility, setLoading, setDisable) and proper exposed variable management for programmatic control

Improves icon visibility handling by introducing dedicated iconVisibility property separate from general tag visibility

Changes default size from large to small for more compact appearance

Enhances color generation system for new tags with predefined palette rotation
2025-09-02 02:18:03 +05:30