Skip to content

Merge 2026.3 to master#4457

Merged
ravirk91 merged 15 commits into
masterfrom
Merge-2026.3-to-master
Mar 9, 2026
Merged

Merge 2026.3 to master#4457
ravirk91 merged 15 commits into
masterfrom
Merge-2026.3-to-master

Conversation

@ravirk91

@ravirk91 ravirk91 commented Mar 9, 2026

Copy link
Copy Markdown
Collaborator

Description

Type of Change

  • Bug fix - [ ] New feature - [ ] Breaking change - [ ] Plugin update

Checklist

  • PR description clearly describes the changes
  • Target branch is correct (master for features, Releases/* for fixes)
  • Latest code from target branch merged
  • No commented/junk code included
  • No new build warnings or errors
  • All existing unit tests pass
  • New unit tests added for new functionality
  • Cross-platform compatibility verified (Windows/Linux/macOS)
  • CI/CD pipeline passes
  • Code follows project conventions (Act{Platform}{Type}, {Platform}Driver)
  • Repository objects use [IsSerializedForLocalRepository] where needed
  • Error handling uses Reporter.ToLog() pattern
  • Documentation updated for user-facing changes
  • Self-review completed and code review comments addressed

Summary by CodeRabbit

  • New Features

    • Automatic API key/token encryption on focus loss and before save (Applitools, Sealights, VRT)
    • Dynamic "Add to Folder" column visibility during item upload
  • Improvements

    • Deferred/lazy folder-tree root creation and automatic folder-tree refresh in list views
    • Export query: added NotStartsWith/NotEndsWith and stricter where-clause validation
    • Improved solution file discovery and folder-path resolution; run description mapping preserved
  • Infrastructure

    • Updated to .NET 10.0 runtime; package version bumped to 2026.3.0.2

ravirk91 and others added 13 commits February 20, 2026 19:36
* Update codeql-analysis.yml

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* Master for beta merge (#4429)

* Merge master into beta (#4418)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Feature/uft lab phone selection (#4414)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* added an api call to fetch the current devices in the UFT Mobile Agent configurations

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* added a button to see the phones when selecting utf device and select from the list

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* tested and fixed all edge cases of the device selection (wrong or empty fields and switching platform)

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* fixed uft devices button

* fixed the design and made a filtering for the phone list

* fixed phone lab filtering system

* Removed the task implementation in unix agent

* changed UI from rejects raised

* updated the ui design

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* fixed defect number 58085  (#4411)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* added the status code number in the json and the output of the rest api call

* Rename status code parameter for clarity

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Update version numbers in GingerCoreCommon.csproj

* Feature/android tv automation support (#4413)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Add Android TV support and enhance platform handling

Enhanced platform support by introducing Android TV as a new platform type (`ePlatformType.AndroidTV`) alongside Mobile and iOS. Updated platform descriptions to include "Mobile/TV" for better clarity and added new image types for visual representation.

UI components now display friendly platform descriptions and improved tooltips. Added ComboBox support for enum descriptions in grids.

Extended the Appium driver to support Android TV with specific capabilities, configurations. Improved error handling and fallback mechanisms for driver initialization.

Updated `ActMobileDevice` to include Android TV-specific actions and defaulted action descriptions to "Mobile/Tv Device Action."

Enhanced `DeviceViewPage` to handle Android TV resolutions and scaling. Added dynamic screen size calculations with fallbacks for Android TV.

Updated agent configurations to include Android TV as a selectable driver type and set default configurations for Android TV agents.

Refactored code for better maintainability, improved exception handling, and consolidated driver configuration logic. Added new image resources for Android TV.

Improved `GenericAppiumDriver` to handle Android TV-specific scenarios, including focused element detection and screenshot scaling.

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* enhancement relted android TV - livespy

* enhancement related to android TV

* Refactor and enhance platform-specific logic

Refactored multiple methods across the codebase to improve maintainability, performance, and platform-specific functionality. Key changes include:

- Simplified `timenow` method in `PomAllElementsPage.xaml.cs` with improved user feedback and streamlined logic.
- Enhanced `BitmapToBase64` in `PomLearnUtils.cs` with null-checks, fallback mechanisms, and better error handling.
- Removed redundant methods `LoadGingerLiveSpyScript` and `GetFocusedElementInfo` in `GenericAppiumDriver.cs`.
- Refactored `SimulatePhotoOrBarcode` to update `GingerLiveSpy.js` handling.
- Added platform-specific logic for `HighLightElement`, `GetElementAtMousePosition`, `FindElementXmlNodeByXY`, `GetElementAtPoint`, and `GetPointOnAppWindow` in `GenericAppiumDriver.cs` to support Android TV, Android (mobile), iOS, and Web.
- Improved shadow DOM support and optimized event handling in `GingerLiveSpy.js`.
- Enhanced error handling, logging, and fallback mechanisms across the codebase.

These changes improve cross-platform compatibility, user experience, and code maintainability.

* Refactor and improve code readability and performance

Refactored `ResizeDeviceButtons` and `GetDevicePoint` methods in `DeviceViewPage.xaml.cs` to simplify logic, remove redundant checks, and improve maintainability. Updated `eDeviceSource` enum in `MobileDriverCommon.cs` by removing `LambdaTest` and reassigning `AndroidTV`.

Replaced the license header in `GingerLiveSpy.js` with an updated Apache License 2.0 notice. Added a new `ElementFromPoint` method to determine the deepest DOM element at a specific point.

Refactored driver configuration logic in `AgentOperations.cs` to improve readability, simplify `DriverConfigParam` processing, enhance error handling, and remove duplicate code. Introduced a new `InitDriverConfigs` method for better organization.

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Enhancement/shared repository folder view2 (#4419)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b142.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* folder view fix

* merge conflict resolved

* merge conflict resolved

* enahcnement

* code rabbit comments handled

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Improve Sikuli SetValue handling and focus logic (#4420)

Refactored SetValue to check for empty text before typing and use KeyModifier.NONE for normal input. Now sets an error if the value is empty. Also, SetFocusToSelectedApplicationInstance is now called synchronously instead of asynchronously.

* Exclamation mark fix (#4421)

* Exclamation mark fix

* commit

* Improve circular reference handling in JSON schema tools (#4422)

Enhanced detection and prevention of circular references and stack overflows in JSON schema-to-object generation. Added try-catch blocks for safer property access, improved stack management, and more robust array/property traversal. Also improved error handling when adding API models to repository folders by logging and fallback to parent folder if needed.

* Add tests for circular refs in JsonSchemaFaker, update count (#4423)

Add unit tests to SwaggetTests.cs to ensure JsonSchemaFaker handles circular and self-referencing JSON schemas without infinite loops or errors. Import NJsonSchema for schema support. Update assertion for "Add a new pet to the store-JSON" to expect 7 return values instead of 8.

* Handled set DS value issue (#4425)

* add to BF iicon removal (#4426)

* add to BF iicon removal

* uncommented code

* code rabbit suggestion

---------

Co-authored-by: Ravi Kumar <[email protected]>

* resolved conflicts

* resolved conflicts

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Prevent Excel formula injection in CSV export (#4431)

* Prevent Excel formula injection in CSV export

D56006_Added logic to prefix values starting with '=', '+', '-', or '@' with a single quote when exporting BusinessFlow, Activity, Act description, and input parameters to CSV. This ensures spreadsheet applications treat these fields as plain text, preventing misinterpretation as formulas. Also refactored code for clarity using intermediate variables.

* Refactor CSV export for clarity and null safety

Renamed method parameters and loop variables for clarity and consistency. Updated references to use descriptive names. Added null check for act.Description to prevent exceptions. Improves code readability and robustness.

---------

Co-authored-by: tanushah <[email protected]>

* added an option to change text color in consoleDriver window

* Action Description fix (#4434)

* Update to .NET 10, package versions, and minor UI tweaks (#4435)

* Update to .NET 10, package versions, and minor UI tweaks

Upgraded all projects from .NET 8.0 to .NET 10.0. Updated System.Text.Json to 10.0.2 and System.Drawing.Common to 10.0.2. Added Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Tokens (8.15.0) to support JWT features. Bumped protobuf-net packages to 3.2.56. Improved XAML grid layout in DataSourceExportToExcelPage.xaml and added DesignerSerializationVisibility attributes in SnippingTool.cs. No functional logic changes.

* upgrade dotnet version to 10

* push supported dotnet version for Github actions

* Fix Dotnet version on Test stage

* Fix CLI TestsGithub

* Fix Test Dotnet Framework of Github with new version of dotnet

* nuget packages updation

* Downgrade EPPlus and Excel Interop, update dependencies

Downgraded EPPlus to 6.0.4 and Microsoft.Office.Interop.Excel to 15.0.4795.1001 across multiple projects for compatibility. Removed Microsoft.IdentityModel.* and System.IdentityModel.Tokens.Jwt from core projects, and removed SixLabors.ImageSharp from GingerCoreNET. Reformatted System.Globalization entry in GingerCore. These changes address dependency and compatibility issues.

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Mask API key in UI and update only on user edit (#4436)

* Mask API key in UI and update only on user edit

Added masking for API key in VRTExternalConfigurationsPage to prevent exposure. The real key is hidden with a generic mask, and only updated if the user changes the field. Existing key is preserved unless explicitly edited.

* Addition of validation

* updated validation

* updated validation rule

---------

Co-authored-by: tanushah <[email protected]>

* Fix codeql-config.yml file place

* Upgrade Github Actions versions

* Update license headers to 2026 and add missing headers (#4440)

Updated the copyright year in all license headers from 2014-2025 to 2014-2026 across the codebase. Added the standard license header to several files that were previously missing it. No functional code changes were made.

Co-authored-by: tanushah <[email protected]>

* Register serializer classes earlier; null check in IsReady (#4441)

Ensure MyRepositoryItem is registered with the serializer before test solution creation in SolutionRepositoryMultiThreadTest. Remove redundant registration call. Add null check to IsReady property in GingerSocket2Test to prevent possible NullReferenceException.

* Downgrade LibGit2Sharp.NativeBinaries to 2.0.278 (#4442)

Updated GingerCore.csproj and GingerCoreNET.csproj to use LibGit2Sharp.NativeBinaries version 2.0.278 instead of 2.0.323. No other changes were made.

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Updated the SSH and Cryptography nuget package to latest (#4432)

Co-authored-by: Ravi Kumar <[email protected]>

* contract update for pipeline run description (#4437)

Co-authored-by: Ravi Kumar <[email protected]>

* Added Code to allow Solution File to be loaded using SolutionRepository and changed version to 2026.3 (#4443)

Co-authored-by: Mayur Rathi <[email protected]>

---------

Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>
Co-authored-by: Omri Agady <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>
* Revert solution iteminfo from SolutionRepository

* updated nuget version for publishing

---------

Co-authored-by: Mayur Rathi <[email protected]>
…-Solution-xml-in-parser-using-Solution-Repository-classes

Allow fetching ginger solution xml in parser using solution repository classes
…tected by Dependebot Github Security scan alert (#4451)

Co-authored-by: Mayur Rathi <[email protected]>
* Enhance API Key encryption and remove masking logic

API Key is now encrypted on field exit and before saving, unless it is a value expression or already encrypted. Removed the previous masking/tag mechanism for the API Key textbox, simplifying the logic and improving security. Added necessary using directives for new functionality.

* Encrypt API keys and tokens and before save

Added automatic encryption for Applitools and Sealights sensitive fields (API keys, agent tokens) when text boxes lose focus and before saving configurations. Skips encryption for value expressions and already encrypted values. Event handlers are attached and re-attached as needed. Includes minor refactoring and comments.

* by mistake changes revert

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
* Refactor export query logic for Excel data source

Improve CreateQueryWithWhereList using LINQ and switch for operators, skipping invalid conditions and returning cleaner query strings. Update DataSourceExportToExcelPage to persist ExportQueryValue in both action and standalone modes, ensuring consistent query generation and improved code clarity.

* Add NotStartsWith/NotEndsWith operators and improve where clause

Added support for "NotStartsWith" and "NotEndsWith" operators in SQL-like predicate generation using "Not Like". Also updated logic to omit the "where" keyword when no conditions are present, returning only the column list for cleaner output.

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: amanpras <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
* Shared repository folder item fix

* Column hide for Overriting Share repo

---------

Co-authored-by: amanpras <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Switched Build.yml and Release.yml to install and reference .NET SDK 10.0.103 instead of 8.0.100. Updated all file copy and signing steps to use net10.0-windows10.0.17763.0 output directories. Adjusted comments and references to match the new .NET version.
@coderabbitai

coderabbitai Bot commented Mar 9, 2026

Copy link
Copy Markdown
Contributor

Walkthrough

Replaces direct folder-tree root creation with a factory/deferred approach, adds LostKeyboardFocus encryption and pre-save encryption for API keys/tokens in external config pages, implements dynamic folder-column visibility in upload UI, and includes assorted repo, query, version, and installer updates.

Changes

Cohort / File(s) Summary
Folder-Tree Factory Calls
Ginger/Ginger/AutomatePageLib/.../ActionsRepositoryPage.xaml.cs, Ginger/Ginger/AutomatePageLib/.../ActivitiesGroupsRepositoryPage.xaml.cs, Ginger/Ginger/AutomatePageLib/.../ActivitiesRepositoryPage.xaml.cs
Replaced direct SetFolderTreeRoot(...) with SetFolderTreeRootFactory(() => new ...) to defer root instantiation.
UcListView Factory Support & Refresh
Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs
Added mFolderTreeRootFactory, SetFolderTreeRootFactory(Func<ITreeViewItem>), and refresh logic to rebuild folder tree and preserve expanded nodes on collection/view changes.
Upload Items Visibility Logic
Ginger/Ginger/AutomatePageLib/.../UploadItemsSelectionPage.xaml.cs
Added inverted Bool-to-Visibility converter, observable items list with property/collection change handlers, and UpdateFolderColumnVisibility() to toggle "Add to Folder" column based on item IsOverrite.
External Configs: Encrypt on Blur & Pre-save
Ginger/Ginger/ExternalConfigurations/ApplitoolsExternalConfigurationsPage.xaml.cs, .../SealightsExternalConfigurationsPage.xaml.cs, .../VRTExternalConfigurationsPage.xaml.cs
Hooked LostKeyboardFocus handlers to encrypt API keys/agent tokens (skip value-expressions & already-encrypted values) and added pre-save encryption checks; VRT removed prior masking workaround.
Export/Query & Repo Adjustments
Ginger/GingerCoreCommon/DataBaseLib/ExportToExcelConfig.cs, Ginger/Ginger/DataSource/DataSourceExportToExcelPage.xaml.cs, Ginger/GingerCoreCommon/Repository/GingerSolutionRepository.cs, Ginger/GingerCoreCommon/Repository/SolutionRepository.cs, Ginger/GingerCoreNET/RunLib/.../DynamicExecutionManager.cs
Added guards/early returns for empty WHERE conditions, validate/skip invalid where items, support NotStartsWith/NotEndsWith, minor formatting change in DataSource export, changed solution filename match to Ginger.Solution.xml, excluded root "~\" from base-folder match, and mapped Runset.RunDescription into RunSetConfig.
Version & Installer Updates
Ginger/GingerCoreCommon/GingerCoreCommon.csproj, Ginger/GingerInstallerScript.iss
Bumped package/project version reference to 2026.3.0.2 and updated installer runtime sources to .NET 10.0 installers.

Sequence Diagram(s)

sequenceDiagram
    participant Page as Repository Page
    participant UcListView as UcListView
    participant Factory as Factory Delegate
    participant TreeItem as Tree Item Root

    Page->>UcListView: SetFolderTreeRootFactory(factory)
    UcListView->>UcListView: Store factory

    Note over UcListView: On list change or view toggle
    UcListView->>UcListView: RefreshFolderTreeView()
    UcListView->>Factory: Invoke factory delegate
    Factory->>TreeItem: Create new tree item
    UcListView->>UcListView: Rebuild tree with new root
    UcListView->>UcListView: Restore expanded nodes
Loading
sequenceDiagram
    participant User as User
    participant TextBox as API Key TextBox
    participant Handler as LostFocus Handler
    participant Crypto as Encryption Service
    participant Config as Configuration Object

    User->>TextBox: Edit API key
    User->>TextBox: Blur (lose focus)
    TextBox->>Handler: LostKeyboardFocus
    Handler->>Handler: If not value-expression && not encrypted
    Handler->>Crypto: Encrypt(value)
    Crypto->>Config: Update encrypted value

    Note over Handler,Config: On Save
    Handler->>Handler: Ensure key encrypted before Save
    Handler->>Crypto: Encrypt if needed
    Crypto->>Config: Persist encrypted value
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~55 minutes

Possibly related PRs

Suggested reviewers

  • Maheshkale447

"🐰
I plant a sleepy factory seed,
Roots awake only when they're need,
Keys hush and hide when focus flies,
Columns vanish where overwrite lies,
A tiny hop — code springs to speed!"

🚥 Pre-merge checks | ❌ 3

❌ Failed checks (2 warnings, 1 inconclusive)

Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description is entirely unfilled—it contains only the template structure with empty sections, unchecked checkboxes, and no actual description of the changes, objectives, or context for the merge. Fill in the description section with a clear summary of the changes, specify the type of change, and provide details about what is being merged and why.
Docstring Coverage ⚠️ Warning Docstring coverage is 2.50% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title 'Merge 2026.3 to master' is overly broad and generic; it describes a merge operation rather than the specific changes within the PR, leaving reviewers unclear about what functional changes are being introduced. Provide a more specific title that describes the primary functional changes (e.g., 'Add factory-based folder tree initialization and API key encryption') rather than just the merge operation.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch Merge-2026.3-to-master

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 15

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
Ginger/GingerCoreCommon/DataBaseLib/ExportToExcelConfig.cs (1)

191-201: ⚠️ Potential issue | 🔴 Critical

Critical: Duplicate/orphan code causes compilation error.

Lines 199-201 contain unreachable code that exists outside the CreateQueryWithWhereList method (which closes at line 197). This will cause a compilation error:

  • The return statement at line 200 is not inside any method
  • The extra closing brace at line 201 creates a brace mismatch

This appears to be leftover code from an incomplete merge or refactor.

Proposed fix: Remove duplicate code
             return $"{columnList} where {whereClause}";

         }
-
-            // Return Ginger expected string: "col1,col2 where condition"
-            return $"{columnList} where {whereClause}";
-        }
         public ObservableList<GingerCore.DataSource.ActDSConditon> GetConditons(ObservableList<WhereConditionItem> conditonStringList, System.Data.DataTable mDataTable)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Ginger/GingerCoreCommon/DataBaseLib/ExportToExcelConfig.cs` around lines 191
- 201, Remove the duplicated orphan return and stray closing brace that exist
outside the CreateQueryWithWhereList method; locate the CreateQueryWithWhereList
function (which builds and returns $"{columnList} where {whereClause}" or
columnList when whereClause is empty) and delete the extra duplicate return
$"{columnList} where {whereClause}"; and remove the unmatched closing brace so
the class compiles cleanly.
Ginger/GingerCoreCommon/GingerCoreCommon.csproj (1)

11-11: ⚠️ Potential issue | 🟠 Major

Align target framework with coding guidelines or update guidelines for .NET 10 migration.

The project targets net10.0, but the coding guideline specifies .NET 8.0 with Windows 10.0.17763.0 compatibility. Either update the project to use the specified framework or update the coding guidelines to reflect the .NET 10 migration strategy.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Ginger/GingerCoreCommon/GingerCoreCommon.csproj` at line 11, The project
currently targets net10.0 via the TargetFramework XML element in
GingerCoreCommon.csproj; update the TargetFramework value to the
coding-guideline-approved target (for example "net8.0-windows10.0.17763.0") to
match the guideline, or alternatively update the coding guideline to document
the intentional migration to .NET 10 and state the new TargetFramework value;
ensure the change is made in the TargetFramework element so build tooling and CI
reflect the chosen framework.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/AddItemToRepositoryWizard/UploadItemsSelectionPage.xaml.cs`:
- Around line 44-66: The BoolToVisibilityInvertConverter class is dead code
(defined but not used); either delete the private class
BoolToVisibilityInvertConverter from UploadItemsSelectionPage.xaml.cs to remove
unused code, or re-enable its intended use by restoring the commented visibility
binding in UploadItemsSelectionPage.xaml that referenced this converter so the
control binding uses BoolToVisibilityInvertConverter; ensure if you re-enable
the binding the converter is declared in the XAML resources or referenced
correctly and that Convert/ConvertBack signatures remain as implemented.
- Around line 256-261: The commented-out per-row visibility binding in
UploadItemsSelectionPage.xaml.cs (the panel.SetBinding call using
Binding(nameof(UploadItemSelection.IsOverrite)) with
BoolToVisibilityInvertConverter) is leftover now that column-level visibility is
used; remove this commented block to avoid confusion (delete the three commented
lines referencing panel.SetBinding, the BoolToVisibilityInvertConverter usage,
and the IsOverrite binding) so the intent is clear and no stale code remains.
- Around line 72-89: The page subscribes to items.CollectionChanged and each
UploadItemSelection.PropertyChanged in the constructor (mItemsList,
Items_CollectionChanged, Item_PropertyChanged) but never unsubscribes, causing a
memory leak; add an Unloaded event handler (e.g., this.Unloaded) that removes
the delegates: unsubscribe items.CollectionChanged, iterate mItemsList to detach
Item_PropertyChanged from each item's PropertyChanged, and also detach the
UploadItemsSelectionPage_Loaded if necessary, ensuring all event subscriptions
from UploadItemsSelectionPage are removed so the page and items can be garbage
collected.

In
`@Ginger/Ginger/ExternalConfigurations/ApplitoolsExternalConfigurationsPage.xaml.cs`:
- Around line 56-58: The LostKeyboardFocus handler is subscribed on
xAPIKeyTextBox.ValueTextBox but never unsubscribed; update the
ApplitoolsExternalConfigurationsPage class to remove that subscription during
cleanup (e.g., implement IDisposable.Dispose or handle Unloaded) by calling
xAPIKeyTextBox.ValueTextBox.LostKeyboardFocus -=
xAPIKeyTextBox_LostKeyboardFocus, or detach in an OnUnloaded/cleanup method to
avoid potential memory leaks while keeping the existing
xAPIKeyTextBox_LostKeyboardFocus method intact.
- Around line 61-75: Update the xAPIKeyTextBox_LostKeyboardFocus handler to
mirror the save handler by skipping encryption for null/empty/whitespace values:
before calling ValueExpression.IsThisAValueExpression(current) and
EncryptionHandler.IsStringEncrypted(current) add a guard using
string.IsNullOrWhiteSpace(current) to return early; keep existing checks for
value expressions (ValueExpression.IsThisAValueExpression) and only call
EncryptionHandler.EncryptwithKey when the string is non-whitespace and not
already encrypted, matching the behavior of xSaveButton_Click.

In
`@Ginger/Ginger/ExternalConfigurations/SealightsExternalConfigurationsPage.xaml.cs`:
- Line 143: Remove the informal reviewer-style comment "// you re-init all
controls here..." in SealightsExternalConfigurationsPage.xaml.cs and either
delete it or replace it with a professional, descriptive comment such as "//
Re-initialize controls after visibility change" to document intent; locate the
exact comment string to find the spot to update (ensure no other logic is
changed).
- Around line 120-128: The encryption conditional block around
_SealightsConfiguration.SealightsAgentToken is mis-indented; reformat the
if-statement and its body to match the file's surrounding indentation/style so
the opening brace, the nested conditions (ValueExpression.IsThisAValueExpression
and EncryptionHandler.IsStringEncrypted), and the assignment using
EncryptionHandler.EncryptwithKey are consistently indented and aligned with
other blocks in this class (SealightsExternalConfigurationsPage.xaml.cs).
- Around line 78-91: Wrap the encryption call in
xSealighsAgentTokenTextBox_LostKeyboardFocus with a try-catch around
EncryptionHandler.EncryptwithKey so encryption exceptions do not bubble up; call
Reporter.ToLog(eLogLevel.ERROR, "...") inside the catch (including exception
details and context like "Sealights agent token encryption failed") and leave
the textbox.Text unchanged on failure (i.e., only assign the encrypted value
when EncryptwithKey succeeds); keep the existing guards using
ValueExpression.IsThisAValueExpression and EncryptionHandler.IsStringEncrypted.
- Around line 20-21: Remove the duplicate using directive for
Amdocs.Ginger.Common in SealightsExternalConfigurationsPage.xaml.cs: keep a
single "using Amdocs.Ginger.Common;" and delete the redundant line so there is
only one import of that namespace; ensure no other necessary using statements
are inadvertently removed and rebuild to confirm no missing references.

In `@Ginger/Ginger/ExternalConfigurations/VRTExternalConfigurationsPage.xaml.cs`:
- Around line 71-84: In xAPIKeyTextBox_LostKeyboardFocus, skip encryption when
the textbox value is null/empty or only whitespace so empty required fields
remain detectable by ValidateEmptyValue; before calling
EncryptionHandler.IsStringEncrypted and EncryptwithKey, check textbox.Text for
string.IsNullOrWhiteSpace(current) and return early (or leave it unchanged) if
true, and otherwise proceed with the existing
ValueExpression.IsThisAValueExpression and EncryptionHandler checks.

In `@Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs`:
- Around line 457-479: The loop in RefreshExpandedTreeNodes casts treeNode.Items
to TreeViewItem which can yield nulls for non-TreeViewItem entries; instead
filter out nulls before iterating (e.g., use Items.OfType<TreeViewItem>() or a
null-check) so you only call RefreshExpandedTreeNodes on actual TreeViewItem
instances and avoid creating a list with nulls; keep existing null guard at top
and retain the xFolderTreeView.RefreshTreeViewItemChildrens(treeNode) call for
the firstChild logic.
- Around line 1224-1231: Remove the duplicated/malformed block that repeats the
folder search logic (the code that reads xSearchTextBox.Text, cancels/disposes
mTreeSearchCts, recreates it, and calls xFolderTreeView.FilterItemsByText(...))
and the orphaned closing braces; locate the duplicate by searching for the
sequence referencing xSearchTextBox, mTreeSearchCts, and
xFolderTreeView.FilterItemsByText in UcListView.xaml.cs and keep only the
correctly placed single copy (the original folder view search logic), deleting
the extra lines so there are no duplicated calls or unmatched braces remaining.
- Around line 427-455: RefreshFolderTreeView is replacing mFolderTreeRoot with a
new instance without unregistering CollectionChanged handlers attached by
NewTreeViewItemBase.GetChildrentGeneric, causing a memory leak; before you
overwrite mFolderTreeRoot (created by mFolderTreeRootFactory()) call a cleanup
API on the existing root to unregister those handlers. Add a cleanup method to
the tree item contract (e.g., ITreeViewItem.Dispose or
UnregisterRepositoryHandlers) and implement it in NewTreeViewItemBase to remove
any CollectionChangedEventManager registrations; then in RefreshFolderTreeView
call that cleanup on the old mFolderTreeRoot (and any expanded children if
necessary) prior to calling xFolderTreeView.ClearTreeItems() and replacing
mFolderTreeRoot.

In `@Ginger/GingerCoreCommon/DataBaseLib/ExportToExcelConfig.cs`:
- Line 22: The using directive "using LiteDB;" in ExportToExcelConfig.cs is
unused; remove that import from the top of the file (in the ExportToExcelConfig
class/file) to clean up unnecessary references and ensure no unused namespace
remains; if the LiteDB types are intended to be used later, instead add the
necessary type references where needed or keep the import only when used.

In `@Ginger/GingerInstallerScript.iss`:
- Around line 48-52: The DetectAndInstallPrerequisites procedure still
references the old .NET runtime names; update all occurrences inside
DetectAndInstallPrerequisites (and any calls it makes) to match the bundled
installer filenames and versions (e.g., replace
windowsdesktop-runtime-8.0.22-win-x64.exe and
aspnetcore-runtime-8.0.22-win-x64.exe with
windowsdesktop-runtime-10.0.3-win-x64.exe and
aspnetcore-runtime-10.0.3-win-x64.exe) and ensure calls to ExtractTemporaryFile
and Exec or ShellExec use those exact 10.0.3 names so extraction and install
steps match the [Files] entries and the .NET 10 runtime is installed.

---

Outside diff comments:
In `@Ginger/GingerCoreCommon/DataBaseLib/ExportToExcelConfig.cs`:
- Around line 191-201: Remove the duplicated orphan return and stray closing
brace that exist outside the CreateQueryWithWhereList method; locate the
CreateQueryWithWhereList function (which builds and returns $"{columnList} where
{whereClause}" or columnList when whereClause is empty) and delete the extra
duplicate return $"{columnList} where {whereClause}"; and remove the unmatched
closing brace so the class compiles cleanly.

In `@Ginger/GingerCoreCommon/GingerCoreCommon.csproj`:
- Line 11: The project currently targets net10.0 via the TargetFramework XML
element in GingerCoreCommon.csproj; update the TargetFramework value to the
coding-guideline-approved target (for example "net8.0-windows10.0.17763.0") to
match the guideline, or alternatively update the coding guideline to document
the intentional migration to .NET 10 and state the new TargetFramework value;
ensure the change is made in the TargetFramework element so build tooling and CI
reflect the chosen framework.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: a3c17c5d-f9c9-4698-887c-24b4a44f9e5a

📥 Commits

Reviewing files that changed from the base of the PR and between 36ca9f1 and 2dad83d.

⛔ Files ignored due to path filters (2)
  • .github/workflows/Build.yml is excluded by !**/*.yml
  • .github/workflows/Release.yml is excluded by !**/*.yml
📒 Files selected for processing (15)
  • Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/ActionsRepositoryPage.xaml.cs
  • Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/ActivitiesGroupsRepositoryPage.xaml.cs
  • Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/ActivitiesRepositoryPage.xaml.cs
  • Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/AddItemToRepositoryWizard/UploadItemsSelectionPage.xaml.cs
  • Ginger/Ginger/DataSource/DataSourceExportToExcelPage.xaml.cs
  • Ginger/Ginger/ExternalConfigurations/ApplitoolsExternalConfigurationsPage.xaml.cs
  • Ginger/Ginger/ExternalConfigurations/SealightsExternalConfigurationsPage.xaml.cs
  • Ginger/Ginger/ExternalConfigurations/VRTExternalConfigurationsPage.xaml.cs
  • Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs
  • Ginger/GingerCoreCommon/DataBaseLib/ExportToExcelConfig.cs
  • Ginger/GingerCoreCommon/GingerCoreCommon.csproj
  • Ginger/GingerCoreCommon/Repository/GingerSolutionRepository.cs
  • Ginger/GingerCoreCommon/Repository/SolutionRepository.cs
  • Ginger/GingerCoreNET/RunLib/DynamicExecutionLib/DynamicExecutionManager.cs
  • Ginger/GingerInstallerScript.iss
💤 Files with no reviewable changes (1)
  • Ginger/Ginger/DataSource/DataSourceExportToExcelPage.xaml.cs

Comment on lines +44 to +66
/// <summary>
/// Converter to invert boolean to visibility (true -> Collapsed, false -> Visible)
/// </summary>
private class BoolToVisibilityInvertConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is bool boolValue)
{
return boolValue ? Visibility.Collapsed : Visibility.Visible;
}
return Visibility.Visible; // Default to visible if not a bool
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is Visibility visibility)
{
return visibility != Visibility.Visible;
}
return false;
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Dead code: BoolToVisibilityInvertConverter is unused.

The BoolToVisibilityInvertConverter class is defined but its usage is commented out at lines 256-261. Either remove this unused class or uncomment the visibility binding.

♻️ Option 1: Remove unused converter
-        /// <summary>
-        /// Converter to invert boolean to visibility (true -> Collapsed, false -> Visible)
-        /// </summary>
-        private class BoolToVisibilityInvertConverter : IValueConverter
-        {
-            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
-            {
-                if (value is bool boolValue)
-                {
-                    return boolValue ? Visibility.Collapsed : Visibility.Visible;
-                }
-                return Visibility.Visible; // Default to visible if not a bool
-            }
-
-            public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
-            {
-                if (value is Visibility visibility)
-                {
-                    return visibility != Visibility.Visible;
-                }
-                return false;
-            }
-        }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
/// <summary>
/// Converter to invert boolean to visibility (true -> Collapsed, false -> Visible)
/// </summary>
private class BoolToVisibilityInvertConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is bool boolValue)
{
return boolValue ? Visibility.Collapsed : Visibility.Visible;
}
return Visibility.Visible; // Default to visible if not a bool
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is Visibility visibility)
{
return visibility != Visibility.Visible;
}
return false;
}
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/AddItemToRepositoryWizard/UploadItemsSelectionPage.xaml.cs`
around lines 44 - 66, The BoolToVisibilityInvertConverter class is dead code
(defined but not used); either delete the private class
BoolToVisibilityInvertConverter from UploadItemsSelectionPage.xaml.cs to remove
unused code, or re-enable its intended use by restoring the commented visibility
binding in UploadItemsSelectionPage.xaml that referenced this converter so the
control binding uses BoolToVisibilityInvertConverter; ensure if you re-enable
the binding the converter is declared in the XAML resources or referenced
correctly and that Convert/ConvertBack signatures remain as implemented.

Comment on lines 72 to +89
public UploadItemsSelectionPage(ObservableList<UploadItemSelection> items, bool isConvert)
{
InitializeComponent();
isConvertPage = isConvert;
mItemsList = items;
SetSelectedItemsGridView();
itemSelectionGrid.DataSourceList = items;

// Listen to ItemUploadType changes to show/hide folder column dynamically
items.CollectionChanged += Items_CollectionChanged;
foreach (var item in items)
{
item.PropertyChanged += Item_PropertyChanged;
}

// Update folder column visibility after grid is loaded
this.Loaded += UploadItemsSelectionPage_Loaded;
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Memory leak: Event handlers not unsubscribed on page unload.

Event handlers are subscribed to items.CollectionChanged and individual item PropertyChanged events, but there's no corresponding unsubscription when the page is unloaded. This can prevent garbage collection of the page and items.

🛡️ Proposed fix: Add Unloaded handler for cleanup
             // Update folder column visibility after grid is loaded
             this.Loaded += UploadItemsSelectionPage_Loaded;
+            this.Unloaded += UploadItemsSelectionPage_Unloaded;
         }
 
+        private void UploadItemsSelectionPage_Unloaded(object sender, RoutedEventArgs e)
+        {
+            if (mItemsList != null)
+            {
+                mItemsList.CollectionChanged -= Items_CollectionChanged;
+                foreach (var item in mItemsList)
+                {
+                    item.PropertyChanged -= Item_PropertyChanged;
+                }
+            }
+        }
+
         private void UploadItemsSelectionPage_Loaded(object sender, RoutedEventArgs e)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
public UploadItemsSelectionPage(ObservableList<UploadItemSelection> items, bool isConvert)
{
InitializeComponent();
isConvertPage = isConvert;
mItemsList = items;
SetSelectedItemsGridView();
itemSelectionGrid.DataSourceList = items;
// Listen to ItemUploadType changes to show/hide folder column dynamically
items.CollectionChanged += Items_CollectionChanged;
foreach (var item in items)
{
item.PropertyChanged += Item_PropertyChanged;
}
// Update folder column visibility after grid is loaded
this.Loaded += UploadItemsSelectionPage_Loaded;
}
public UploadItemsSelectionPage(ObservableList<UploadItemSelection> items, bool isConvert)
{
InitializeComponent();
isConvertPage = isConvert;
mItemsList = items;
SetSelectedItemsGridView();
itemSelectionGrid.DataSourceList = items;
// Listen to ItemUploadType changes to show/hide folder column dynamically
items.CollectionChanged += Items_CollectionChanged;
foreach (var item in items)
{
item.PropertyChanged += Item_PropertyChanged;
}
// Update folder column visibility after grid is loaded
this.Loaded += UploadItemsSelectionPage_Loaded;
this.Unloaded += UploadItemsSelectionPage_Unloaded;
}
private void UploadItemsSelectionPage_Unloaded(object sender, RoutedEventArgs e)
{
if (mItemsList != null)
{
mItemsList.CollectionChanged -= Items_CollectionChanged;
foreach (var item in mItemsList)
{
item.PropertyChanged -= Item_PropertyChanged;
}
}
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/AddItemToRepositoryWizard/UploadItemsSelectionPage.xaml.cs`
around lines 72 - 89, The page subscribes to items.CollectionChanged and each
UploadItemSelection.PropertyChanged in the constructor (mItemsList,
Items_CollectionChanged, Item_PropertyChanged) but never unsubscribes, causing a
memory leak; add an Unloaded event handler (e.g., this.Unloaded) that removes
the delegates: unsubscribe items.CollectionChanged, iterate mItemsList to detach
Item_PropertyChanged from each item's PropertyChanged, and also detach the
UploadItemsSelectionPage_Loaded if necessary, ensuring all event subscriptions
from UploadItemsSelectionPage are removed so the page and items can be garbage
collected.

Comment on lines +256 to +261
//// Hide folder selection UI for overwrite items (folder cannot be changed during overwrite)
//panel.SetBinding(UIElement.VisibilityProperty, new Binding(nameof(UploadItemSelection.IsOverrite))
//{
// Converter = new BoolToVisibilityInvertConverter(),
// Mode = BindingMode.OneWay
//});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Clarify intent: Commented-out visibility binding.

The per-row visibility binding is commented out in favor of column-level visibility. If this is intentional (column visibility is preferred over row-level UI hiding), consider removing the commented code to reduce confusion.

♻️ Remove commented code if not needed
-            //// Hide folder selection UI for overwrite items (folder cannot be changed during overwrite)
-            //panel.SetBinding(UIElement.VisibilityProperty, new Binding(nameof(UploadItemSelection.IsOverrite))
-            //{
-            //    Converter = new BoolToVisibilityInvertConverter(),
-            //    Mode = BindingMode.OneWay
-            //});
-
             var txt = new FrameworkElementFactory(typeof(TextBlock));
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
//// Hide folder selection UI for overwrite items (folder cannot be changed during overwrite)
//panel.SetBinding(UIElement.VisibilityProperty, new Binding(nameof(UploadItemSelection.IsOverrite))
//{
// Converter = new BoolToVisibilityInvertConverter(),
// Mode = BindingMode.OneWay
//});
var txt = new FrameworkElementFactory(typeof(TextBlock));
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/AddItemToRepositoryWizard/UploadItemsSelectionPage.xaml.cs`
around lines 256 - 261, The commented-out per-row visibility binding in
UploadItemsSelectionPage.xaml.cs (the panel.SetBinding call using
Binding(nameof(UploadItemSelection.IsOverrite)) with
BoolToVisibilityInvertConverter) is leftover now that column-level visibility is
used; remove this commented block to avoid confusion (delete the three commented
lines referencing panel.SetBinding, the BoolToVisibilityInvertConverter usage,
and the IsOverrite binding) so the intent is clear and no stale code remains.

Comment on lines +56 to +58
// Encrypt API key on blur (AskLisa/VRT style)
xAPIKeyTextBox.ValueTextBox.LostKeyboardFocus += xAPIKeyTextBox_LostKeyboardFocus;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Consider unsubscribing the event handler to prevent potential memory leaks.

The LostKeyboardFocus event is subscribed but never unsubscribed. While likely acceptable for a long-lived configuration page, consider implementing IDisposable or unsubscribing in a cleanup method for consistency with best practices.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@Ginger/Ginger/ExternalConfigurations/ApplitoolsExternalConfigurationsPage.xaml.cs`
around lines 56 - 58, The LostKeyboardFocus handler is subscribed on
xAPIKeyTextBox.ValueTextBox but never unsubscribed; update the
ApplitoolsExternalConfigurationsPage class to remove that subscription during
cleanup (e.g., implement IDisposable.Dispose or handle Unloaded) by calling
xAPIKeyTextBox.ValueTextBox.LostKeyboardFocus -=
xAPIKeyTextBox_LostKeyboardFocus, or detach in an OnUnloaded/cleanup method to
avoid potential memory leaks while keeping the existing
xAPIKeyTextBox_LostKeyboardFocus method intact.

Comment on lines +61 to +75
private void xAPIKeyTextBox_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
var textbox = xAPIKeyTextBox.ValueTextBox;
string current = textbox.Text;

// Do not encrypt value expressions (AskLisa rule)
if (ValueExpression.IsThisAValueExpression(current))
return;

// Encrypt only if not already encrypted
if (!EncryptionHandler.IsStringEncrypted(current))
{
textbox.Text = EncryptionHandler.EncryptwithKey(current);
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add null/whitespace check for consistency with the save handler.

The LostKeyboardFocus handler lacks the string.IsNullOrWhiteSpace check that exists in xSaveButton_Click (line 96). While EncryptString internally handles empty strings (returning them as-is), whitespace-only values would be encrypted here but skipped in the save handler, creating inconsistent behavior.

Proposed fix
 private void xAPIKeyTextBox_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
 {
     var textbox = xAPIKeyTextBox.ValueTextBox;
     string current = textbox.Text;

+    // Skip if empty or whitespace
+    if (string.IsNullOrWhiteSpace(current))
+        return;
+
     // Do not encrypt value expressions (AskLisa rule)
     if (ValueExpression.IsThisAValueExpression(current))
         return;

     // Encrypt only if not already encrypted
     if (!EncryptionHandler.IsStringEncrypted(current))
     {
         textbox.Text = EncryptionHandler.EncryptwithKey(current);
     }
 }

Based on learnings: "When validating API keys or similar sensitive configuration values... check for null, empty, or whitespace with string.IsNullOrWhiteSpace() rather than just string.IsNullOrEmpty()."

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
private void xAPIKeyTextBox_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
var textbox = xAPIKeyTextBox.ValueTextBox;
string current = textbox.Text;
// Do not encrypt value expressions (AskLisa rule)
if (ValueExpression.IsThisAValueExpression(current))
return;
// Encrypt only if not already encrypted
if (!EncryptionHandler.IsStringEncrypted(current))
{
textbox.Text = EncryptionHandler.EncryptwithKey(current);
}
}
private void xAPIKeyTextBox_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
var textbox = xAPIKeyTextBox.ValueTextBox;
string current = textbox.Text;
// Skip if empty or whitespace
if (string.IsNullOrWhiteSpace(current))
return;
// Do not encrypt value expressions (AskLisa rule)
if (ValueExpression.IsThisAValueExpression(current))
return;
// Encrypt only if not already encrypted
if (!EncryptionHandler.IsStringEncrypted(current))
{
textbox.Text = EncryptionHandler.EncryptwithKey(current);
}
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@Ginger/Ginger/ExternalConfigurations/ApplitoolsExternalConfigurationsPage.xaml.cs`
around lines 61 - 75, Update the xAPIKeyTextBox_LostKeyboardFocus handler to
mirror the save handler by skipping encryption for null/empty/whitespace values:
before calling ValueExpression.IsThisAValueExpression(current) and
EncryptionHandler.IsStringEncrypted(current) add a guard using
string.IsNullOrWhiteSpace(current) to return early; keep existing checks for
value expressions (ValueExpression.IsThisAValueExpression) and only call
EncryptionHandler.EncryptwithKey when the string is non-whitespace and not
already encrypted, matching the behavior of xSaveButton_Click.

Comment on lines +427 to +455
private void RefreshFolderTreeView()
{
try
{
this.Dispatcher.Invoke(() =>
{
if (xFolderTreeView != null && xFolderTreeView.Tree != null && xFolderTreeView.Tree.Items.Count > 0)
{
// Create a fresh tree root to avoid cached children
if (mFolderTreeRootFactory != null)
{
mFolderTreeRoot = mFolderTreeRootFactory();
}

if (mFolderTreeRoot != null)
{
xFolderTreeView.ClearTreeItems();
xFolderTreeView.AddItem(mFolderTreeRoot);
}
// Refresh all expanded nodes in the tree
RefreshExpandedTreeNodes(xFolderTreeView.Tree.Items[0] as TreeViewItem);
}
});
}
catch (Exception ex)
{
Reporter.ToLog(eLogLevel.ERROR, "Failed to refresh folder tree view", ex);
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if ITreeViewItem or tree item base classes have any cleanup/dispose methods
ast-grep --pattern $'interface ITreeViewItem {
  $$$
}'
rg -n "RemoveHandler|Dispose|Cleanup|UnregisterEvents" --type cs -g "*TreeViewItem*.cs" -C2

Repository: Ginger-Automation/Ginger

Length of output: 2563


🏁 Script executed:

# Get full context of RefreshFolderTreeView method
cat -n Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs | sed -n '410,470p'

Repository: Ginger-Automation/Ginger

Length of output: 2819


🏁 Script executed:

# Check how mFolderTreeRoot is used and if there's cleanup before replacement
rg -n "mFolderTreeRoot" --type cs Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs -B2 -A2

Repository: Ginger-Automation/Ginger

Length of output: 2967


🏁 Script executed:

# Look at NewTreeViewItemBase to understand tree item lifecycle and disposal
cat -n Ginger/Ginger/SolutionWindows/TreeViewItems/NewTreeViewItemBase.cs | sed -n '560,600p'

Repository: Ginger-Automation/Ginger

Length of output: 2343


🏁 Script executed:

# Check if tree items implement IDisposable or have cleanup methods
rg -n "Dispose|~.*\(" --type cs Ginger/Ginger/SolutionWindows/TreeViewItems/NewTreeViewItemBase.cs

Repository: Ginger-Automation/Ginger

Length of output: 50


🏁 Script executed:

# Find ClearTreeItems implementation
rg -n "void ClearTreeItems|ClearTreeItems()" --type cs -A10

Repository: Ginger-Automation/Ginger

Length of output: 15877


🏁 Script executed:

# Check ITreeViewItem interface definition
rg -n "interface ITreeViewItem" --type cs -A20

Repository: Ginger-Automation/Ginger

Length of output: 1476


Memory leak: Old tree roots' event handlers not cleaned up.

When RefreshFolderTreeView creates a new tree root via mFolderTreeRootFactory() at line 438, the previous mFolderTreeRoot is discarded before calling xFolderTreeView.ClearTreeItems() (line 443). While ClearTreeItems() removes items from the WPF tree (via Tree.Items.Clear()), it does not clean up the CollectionChangedEventManager handlers that NewTreeViewItemBase.GetChildrentGeneric() attaches to repository collections (lines 578, 584). These handlers remain registered on the collections and will continue firing on the orphaned tree items, preventing garbage collection.

The ITreeViewItem interface lacks any cleanup or dispose mechanism. Implement explicit handler cleanup before replacing the tree root, or introduce a cleanup method on tree item implementations to unregister handlers.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs` around lines 427
- 455, RefreshFolderTreeView is replacing mFolderTreeRoot with a new instance
without unregistering CollectionChanged handlers attached by
NewTreeViewItemBase.GetChildrentGeneric, causing a memory leak; before you
overwrite mFolderTreeRoot (created by mFolderTreeRootFactory()) call a cleanup
API on the existing root to unregister those handlers. Add a cleanup method to
the tree item contract (e.g., ITreeViewItem.Dispose or
UnregisterRepositoryHandlers) and implement it in NewTreeViewItemBase to remove
any CollectionChangedEventManager registrations; then in RefreshFolderTreeView
call that cleanup on the old mFolderTreeRoot (and any expanded children if
necessary) prior to calling xFolderTreeView.ClearTreeItems() and replacing
mFolderTreeRoot.

Comment on lines +457 to +479
private void RefreshExpandedTreeNodes(TreeViewItem treeNode)
{
if (treeNode == null)
{
return;
}

if (treeNode.IsExpanded && treeNode.Items.Count > 0)
{
var firstChild = treeNode.Items[0] as TreeViewItem;
if (firstChild != null)
{
xFolderTreeView.RefreshTreeViewItemChildrens(treeNode);
}

// Recursively refreshing child nodes
var childItems = treeNode.Items.Cast<TreeViewItem>().ToList();
foreach (var childNode in childItems)
{
RefreshExpandedTreeNodes(childNode);
}
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Potential issue: Casting items without null-check in loop.

Line 473 casts items to TreeViewItem and creates a list, but the cast may produce nulls for non-TreeViewItem elements. The subsequent foreach would then pass nulls to RefreshExpandedTreeNodes, which handles null at line 459, but this is inefficient.

♻️ Minor: Filter out nulls during cast
-                var childItems = treeNode.Items.Cast<TreeViewItem>().ToList();
-                foreach (var childNode in childItems)
+                foreach (var childNode in treeNode.Items.OfType<TreeViewItem>())
                 {
                     RefreshExpandedTreeNodes(childNode);
                 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
private void RefreshExpandedTreeNodes(TreeViewItem treeNode)
{
if (treeNode == null)
{
return;
}
if (treeNode.IsExpanded && treeNode.Items.Count > 0)
{
var firstChild = treeNode.Items[0] as TreeViewItem;
if (firstChild != null)
{
xFolderTreeView.RefreshTreeViewItemChildrens(treeNode);
}
// Recursively refreshing child nodes
var childItems = treeNode.Items.Cast<TreeViewItem>().ToList();
foreach (var childNode in childItems)
{
RefreshExpandedTreeNodes(childNode);
}
}
}
private void RefreshExpandedTreeNodes(TreeViewItem treeNode)
{
if (treeNode == null)
{
return;
}
if (treeNode.IsExpanded && treeNode.Items.Count > 0)
{
var firstChild = treeNode.Items[0] as TreeViewItem;
if (firstChild != null)
{
xFolderTreeView.RefreshTreeViewItemChildrens(treeNode);
}
// Recursively refreshing child nodes
foreach (var childNode in treeNode.Items.OfType<TreeViewItem>())
{
RefreshExpandedTreeNodes(childNode);
}
}
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs` around lines 457
- 479, The loop in RefreshExpandedTreeNodes casts treeNode.Items to TreeViewItem
which can yield nulls for non-TreeViewItem entries; instead filter out nulls
before iterating (e.g., use Items.OfType<TreeViewItem>() or a null-check) so you
only call RefreshExpandedTreeNodes on actual TreeViewItem instances and avoid
creating a list with nulls; keep existing null guard at top and retain the
xFolderTreeView.RefreshTreeViewItemChildrens(treeNode) call for the firstChild
logic.

Comment thread Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs Outdated
using Amdocs.Ginger.Common;
using Amdocs.Ginger.Repository;
using GingerCore.DataSource;
using LiteDB;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Unused import LiteDB.

The using LiteDB; directive appears unused in this file. No LiteDB types are referenced. Consider removing it to keep imports clean.

Proposed fix
-using LiteDB;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
using LiteDB;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Ginger/GingerCoreCommon/DataBaseLib/ExportToExcelConfig.cs` at line 22, The
using directive "using LiteDB;" in ExportToExcelConfig.cs is unused; remove that
import from the top of the file (in the ExportToExcelConfig class/file) to clean
up unnecessary references and ensure no unused namespace remains; if the LiteDB
types are intended to be used later, instead add the necessary type references
where needed or keep the import only when used.

Comment on lines +48 to +52
Source: "D:\a\Ginger\Ginger\Ginger\Ginger\bin\Release\net10.0-windows10.0.17763.0\Ginger.exe"; DestDir: "{app}"; Flags: ignoreversion; BeforeInstall:DetectAndInstallPrerequisites;
Source: "D:\a\Ginger\Ginger\Ginger\Ginger\bin\Release\net10.0-windows10.0.17763.0\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs;
Source: "D:\a\Ginger\Ginger\Extensions\DotnetDependencies\netcorecheck_x64.exe"; Flags: dontcopy deleteafterinstall noencryption
Source: "D:\a\Ginger\Ginger\Extensions\DotnetDependencies\windowsdesktop-runtime-8.0.22-win-x64.exe"; DestDir: {tmp}; Flags: dontcopy deleteafterinstall noencryption;
Source: "D:\a\Ginger\Ginger\Extensions\DotnetDependencies\aspnetcore-runtime-8.0.22-win-x64.exe"; DestDir: {tmp}; Flags: dontcopy deleteafterinstall noencryption;
Source: "D:\a\Ginger\Ginger\Extensions\DotnetDependencies\windowsdesktop-runtime-10.0.3-win-x64.exe"; DestDir: {tmp}; Flags: dontcopy deleteafterinstall noencryption;
Source: "D:\a\Ginger\Ginger\Extensions\DotnetDependencies\aspnetcore-runtime-10.0.3-win-x64.exe"; DestDir: {tmp}; Flags: dontcopy deleteafterinstall noencryption;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Critical: Runtime version mismatch between bundled files and installation logic.

The [Files] section correctly bundles .NET 10.0.3 runtime installers, but the DetectAndInstallPrerequisites procedure (lines 112-136) still references .NET 8.0.22. This will cause installation failures because:

  1. ExtractTemporaryFile('windowsdesktop-runtime-8.0.22-win-x64.exe') will fail since only the 10.0.3 version is bundled
  2. Even if extraction succeeded, the wrong runtime version would be installed for a .NET 10.0 application

The GitHub CI variant (GingerInstallerScriptGithub.iss) has this correctly updated to 10.0.3 in both locations.

🐛 Proposed fix to update DetectAndInstallPrerequisites
-    If not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App 8.0.22') then
+    If not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App 10.0.3') then
     begin
-      WizardForm.StatusLabel.Caption := 'Installing Microsoft.WindowsDesktop.App Runtime 8.0.22...';
-      if not FileExists(ExpandConstant('{tmp}\windowsdesktop-runtime-8.0.22-win-x64.exe')) then begin
-        ExtractTemporaryFile('windowsdesktop-runtime-8.0.22-win-x64.exe');
+      WizardForm.StatusLabel.Caption := 'Installing Microsoft.WindowsDesktop.App Runtime 10.0.3...';
+      if not FileExists(ExpandConstant('{tmp}\windowsdesktop-runtime-10.0.3-win-x64.exe')) then begin
+        ExtractTemporaryFile('windowsdesktop-runtime-10.0.3-win-x64.exe');
       end;
-      if not Exec(ExpandConstant('{tmp}\windowsdesktop-runtime-8.0.22-win-x64.exe'), '/q /norestart', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
+      if not Exec(ExpandConstant('{tmp}\windowsdesktop-runtime-10.0.3-win-x64.exe'), '/q /norestart', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
         begin
           { you can interact with the user that the installation failed }
-          MsgBox('.NET Desktop runtime 8.0.22 installation failed with code: ' + IntToStr(ResultCode) + '. Please install it manually.',
+          MsgBox('.NET Desktop runtime 10.0.3 installation failed with code: ' + IntToStr(ResultCode) + '. Please install it manually.',
             mbError, MB_OK);
       end;
     end;
-    If not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App 8.0.22') then 
+    If not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App 10.0.3') then 
     begin
-      WizardForm.StatusLabel.Caption := 'Installing Microsoft.AspNetCore.App Runtime 8.0.22...';
-      if not FileExists(ExpandConstant('{tmp}\aspnetcore-runtime-8.0.22-win-x64.exe')) then begin
-        ExtractTemporaryFile('aspnetcore-runtime-8.0.22-win-x64.exe');
+      WizardForm.StatusLabel.Caption := 'Installing Microsoft.AspNetCore.App Runtime 10.0.3...';
+      if not FileExists(ExpandConstant('{tmp}\aspnetcore-runtime-10.0.3-win-x64.exe')) then begin
+        ExtractTemporaryFile('aspnetcore-runtime-10.0.3-win-x64.exe');
       end;
-      if not Exec(ExpandConstant('{tmp}\aspnetcore-runtime-8.0.22-win-x64.exe'), '/q /norestart', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
+      if not Exec(ExpandConstant('{tmp}\aspnetcore-runtime-10.0.3-win-x64.exe'), '/q /norestart', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
         begin
           { you can interact with the user that the installation failed }
-          MsgBox('.NET ASP Net Core 8.0.22 installation failed with code: ' + IntToStr(ResultCode) + '. Please install it manually.',
+          MsgBox('.NET ASP Net Core 10.0.3 installation failed with code: ' + IntToStr(ResultCode) + '. Please install it manually.',
             mbError, MB_OK);
       end;
     end;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Ginger/GingerInstallerScript.iss` around lines 48 - 52, The
DetectAndInstallPrerequisites procedure still references the old .NET runtime
names; update all occurrences inside DetectAndInstallPrerequisites (and any
calls it makes) to match the bundled installer filenames and versions (e.g.,
replace windowsdesktop-runtime-8.0.22-win-x64.exe and
aspnetcore-runtime-8.0.22-win-x64.exe with
windowsdesktop-runtime-10.0.3-win-x64.exe and
aspnetcore-runtime-10.0.3-win-x64.exe) and ensure calls to ExtractTemporaryFile
and Exec or ShellExec use those exact 10.0.3 names so extraction and install
steps match the [Files] entries and the .NET 10 runtime is installed.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
Ginger/GingerCoreCommon/DataBaseLib/ExportToExcelConfig.cs (1)

145-195: ⚠️ Potential issue | 🟠 Major

Build AND from emitted predicates, not from i.

After the new continue, i > 0 no longer means that a previous predicate was added. If the first item is skipped and the second is valid, this returns ... where AND ...; an unhandled operator can also leave a dangling AND. Collect non-empty predicates and join them once at the end.

Possible fix
-            string whereClause = "";
+            var predicates = new List<string>();
@@
-                if (i > 0)
-                    whereClause += " AND ";
-                whereClause += predicate;
+                if (!string.IsNullOrWhiteSpace(predicate))
+                {
+                    predicates.Add(predicate);
+                }
             }
+            string whereClause = string.Join(" AND ", predicates);
             if (string.IsNullOrWhiteSpace(whereClause))
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Ginger/GingerCoreCommon/DataBaseLib/ExportToExcelConfig.cs` around lines 145
- 195, The loop that builds whereClause uses the loop index (i) to insert " AND
", which is wrong after the added continue; instead collect non-empty predicates
into a List<string> (e.g., predicates) inside the loop (after computing
predicate for each item and skipping when predicate is empty), then after the
loop do whereClause = string.Join(" AND ", predicates); keep the existing
validation of item.TableColumn/item.RowValue and the operator switch
(item.Opertor), and if predicates is empty return columnList as before; replace
all uses of i-based concatenation with the join.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@Ginger/GingerCoreCommon/DataBaseLib/ExportToExcelConfig.cs`:
- Around line 139-143: The early-return in ExportToExcelConfig when
whereConditionList is null/empty currently returns only columnList, breaking the
expected return shape consumers rely on (ActDSTableElement ->
DataSource.ExporttoExcel and LiteDB's custom projection logic). Change the
method (ExportToExcelConfig) so that when there are no conditions it still
returns the same projection-shaped object/structure the callers expect (e.g., a
projection object/tuple that contains columnList plus an explicit empty/no-op
projection flag or collection) rather than returning raw columnList; ensure
callers in DataSource.ExporttoExcel and LiteDB continue to detect “no filters”
via that projection shape instead of relying on a null/Count check.
- Around line 154-156: The current check in ExportToExcelConfig.cs that skips
items when string.IsNullOrEmpty(item.TableColumn) ||
string.IsNullOrEmpty(item.RowValue) removes valid IsNull/IsNotNull predicates;
update the filtering logic to allow items whose operator indicates a null-check
even if RowValue is null/empty: detect the operator (as defined in
ActDSConditon, e.g. IsNull/IsNotNull) on the item and only skip when TableColumn
is empty or when RowValue is required by the operator; also ensure the
predicate-emission switch (the block around the current 159-186 region)
generates the correct SQL/DSL clauses for IsNull and IsNotNull instead of
silently dropping them.

---

Outside diff comments:
In `@Ginger/GingerCoreCommon/DataBaseLib/ExportToExcelConfig.cs`:
- Around line 145-195: The loop that builds whereClause uses the loop index (i)
to insert " AND ", which is wrong after the added continue; instead collect
non-empty predicates into a List<string> (e.g., predicates) inside the loop
(after computing predicate for each item and skipping when predicate is empty),
then after the loop do whereClause = string.Join(" AND ", predicates); keep the
existing validation of item.TableColumn/item.RowValue and the operator switch
(item.Opertor), and if predicates is empty return columnList as before; replace
all uses of i-based concatenation with the join.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: e4c519b2-d55c-4b0c-9304-4ed12b8ac74d

📥 Commits

Reviewing files that changed from the base of the PR and between 2dad83d and 63ca8bf.

📒 Files selected for processing (1)
  • Ginger/GingerCoreCommon/DataBaseLib/ExportToExcelConfig.cs

Comment on lines +139 to 143
// PR Change: Return early when no conditions
if (whereConditionList == null || whereConditionList.Count == 0)
{
return columnList;
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Don't change the no-filter return shape without updating the consumers.

Line 142 and Line 193 now return only columnList. Ginger/GingerCoreNET/DataSource/ActDSTableElement.cs:218-229 feeds that straight into DataSource.ExporttoExcel(), and Ginger/GingerCoreNET/DataSource/LiteDB.cs:229-248 only applies the custom projection inside the " where " branch. With this change, an empty condition list—or one where every item is skipped—falls back to exporting the full table instead of the requested custom selection.

Also applies to: 191-195

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Ginger/GingerCoreCommon/DataBaseLib/ExportToExcelConfig.cs` around lines 139
- 143, The early-return in ExportToExcelConfig when whereConditionList is
null/empty currently returns only columnList, breaking the expected return shape
consumers rely on (ActDSTableElement -> DataSource.ExporttoExcel and LiteDB's
custom projection logic). Change the method (ExportToExcelConfig) so that when
there are no conditions it still returns the same projection-shaped
object/structure the callers expect (e.g., a projection object/tuple that
contains columnList plus an explicit empty/no-op projection flag or collection)
rather than returning raw columnList; ensure callers in DataSource.ExporttoExcel
and LiteDB continue to detect “no filters” via that projection shape instead of
relying on a null/Count check.

Comment on lines +154 to 156
// PR change: skip invalid items
if (string.IsNullOrEmpty(item.TableColumn) || string.IsNullOrEmpty(item.RowValue))
continue;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

IsNull and IsNotNull are still impossible to serialize here.

Ginger/GingerCoreCommon/DataBaseLib/ActDSConditon.cs:63-65 defines both operators, but Line 155 drops them because RowValue is expected to be non-empty, and the switch never emits predicates for them anyway. Any null-check filter now silently disappears from the generated query.

Possible fix
-                if (string.IsNullOrEmpty(item.TableColumn) || string.IsNullOrEmpty(item.RowValue))
+                if (string.IsNullOrEmpty(item.TableColumn) ||
+                    ((item.Opertor != "IsNull" && item.Opertor != "IsNotNull") && string.IsNullOrEmpty(item.RowValue)))
                     continue;
@@
+                    case "IsNull":
+                        predicate = $"{item.TableColumn} Is Null";
+                        break;
+                    case "IsNotNull":
+                        predicate = $"{item.TableColumn} Is Not Null";
+                        break;

Also applies to: 159-186

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Ginger/GingerCoreCommon/DataBaseLib/ExportToExcelConfig.cs` around lines 154
- 156, The current check in ExportToExcelConfig.cs that skips items when
string.IsNullOrEmpty(item.TableColumn) || string.IsNullOrEmpty(item.RowValue)
removes valid IsNull/IsNotNull predicates; update the filtering logic to allow
items whose operator indicates a null-check even if RowValue is null/empty:
detect the operator (as defined in ActDSConditon, e.g. IsNull/IsNotNull) on the
item and only skip when TableColumn is empty or when RowValue is required by the
operator; also ensure the predicate-emission switch (the block around the
current 159-186 region) generates the correct SQL/DSL clauses for IsNull and
IsNotNull instead of silently dropping them.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs (2)

1268-1273: ⚠️ Potential issue | 🟡 Minor

Dispose the cancelled tree-search token source on clear.

This path only calls Cancel(). Repeated clear operations leave the previous CancellationTokenSource alive until some later search/dispose path happens. Mirror the other search flows and dispose/null it here too.

♻️ Proposed fix
             if (mFolderViewActive)
             {
                 // clear tree filter to show all
                 mTreeSearchCts?.Cancel();
+                mTreeSearchCts?.Dispose();
+                mTreeSearchCts = null;
                 xFolderTreeView.FilterItemsByText(xFolderTreeView.TreeItemsCollection, string.Empty);
             }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs` around lines
1268 - 1273, The clear path when mFolderViewActive only calls
mTreeSearchCts?.Cancel(), leaving the CancellationTokenSource undisposed; update
the block handling folder clears so after calling mTreeSearchCts?.Cancel() you
also call mTreeSearchCts?.Dispose() and then set mTreeSearchCts = null (mirror
other search flows), ensuring you reference the same mTreeSearchCts symbol and
keep the existing xFolderTreeView.FilterItemsByText(...) call unchanged.

410-420: ⚠️ Potential issue | 🟠 Major

Handle NotifyCollectionChangedAction.Reset as a full folder-tree rebuild.

ObservableCollection.Clear() and some bulk refresh paths raise Reset, not Remove. In those cases this branch skips RefreshFolderTreeView(), so the hidden folder tree can keep stale nodes until a later incremental change arrives. Include Reset in the rebuild condition.

♻️ Proposed fix
-                if (e.Action is NotifyCollectionChangedAction.Add or
-                    NotifyCollectionChangedAction.Replace or
-                    NotifyCollectionChangedAction.Remove or
-                    NotifyCollectionChangedAction.Move)
+                if (e.Action is NotifyCollectionChangedAction.Add or
+                    NotifyCollectionChangedAction.Replace or
+                    NotifyCollectionChangedAction.Remove or
+                    NotifyCollectionChangedAction.Move or
+                    NotifyCollectionChangedAction.Reset)
                 {
                     OnUcListViewEvent(UcListViewEventArgs.eEventType.UpdateIndex);

                     // Refresh folder tree view when items are added/removed/modified
                     if (mFolderTreeRoot != null && xFolderTreeView != null)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs` around lines 410
- 420, The collection-changed branch currently only handles
Add/Replace/Remove/Move so Reset notifications (raised by
ObservableCollection.Clear() or bulk refreshes) skip RefreshFolderTreeView and
leave the folder tree stale; update the conditional that checks e.Action (the
NotifyCollectionChangedAction) to also include
NotifyCollectionChangedAction.Reset so that when mFolderTreeRoot != null and
xFolderTreeView != null the code calls RefreshFolderTreeView() (while still
invoking OnUcListViewEvent(UcListViewEventArgs.eEventType.UpdateIndex) as
before).
♻️ Duplicate comments (1)
Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs (1)

436-444: ⚠️ Potential issue | 🟠 Major

Clean up the previous tree root before overwriting it.

This still swaps mFolderTreeRoot for a fresh instance without any teardown of the old root/children. Clearing the WPF items does not unregister handlers owned by the discarded tree items, so orphaned nodes can stay alive and keep reacting to repository changes. The same replacement pattern also exists in the other new factory paths.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs` around lines 436
- 444, Before replacing mFolderTreeRoot (created via mFolderTreeRootFactory)
call its cleanup/teardown routine and unregister any event handlers on the
existing tree nodes so they don't remain alive; specifically, if mFolderTreeRoot
is non-null, invoke its Dispose/Unregister/Teardown method (or walk its children
to detach handlers) and then clear xFolderTreeView items before assigning a new
instance and calling xFolderTreeView.AddItem; apply the same teardown step to
the other factory-based replacement paths that assign to mFolderTreeRoot to
ensure previous roots are fully torn down.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs`:
- Around line 451-453: The catch block in UcListView.xaml.cs currently calls
Reporter.ToLog(eLogLevel.ERROR, "Failed to refresh folder tree view", ex);
update it to use the repo-standard signature by removing the exception argument
and calling Reporter.ToLog(eLogLevel.ERROR, "Failed to refresh folder tree
view") instead (keep this change inside the same catch in the method where the
folder tree refresh is handled).

---

Outside diff comments:
In `@Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs`:
- Around line 1268-1273: The clear path when mFolderViewActive only calls
mTreeSearchCts?.Cancel(), leaving the CancellationTokenSource undisposed; update
the block handling folder clears so after calling mTreeSearchCts?.Cancel() you
also call mTreeSearchCts?.Dispose() and then set mTreeSearchCts = null (mirror
other search flows), ensuring you reference the same mTreeSearchCts symbol and
keep the existing xFolderTreeView.FilterItemsByText(...) call unchanged.
- Around line 410-420: The collection-changed branch currently only handles
Add/Replace/Remove/Move so Reset notifications (raised by
ObservableCollection.Clear() or bulk refreshes) skip RefreshFolderTreeView and
leave the folder tree stale; update the conditional that checks e.Action (the
NotifyCollectionChangedAction) to also include
NotifyCollectionChangedAction.Reset so that when mFolderTreeRoot != null and
xFolderTreeView != null the code calls RefreshFolderTreeView() (while still
invoking OnUcListViewEvent(UcListViewEventArgs.eEventType.UpdateIndex) as
before).

---

Duplicate comments:
In `@Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs`:
- Around line 436-444: Before replacing mFolderTreeRoot (created via
mFolderTreeRootFactory) call its cleanup/teardown routine and unregister any
event handlers on the existing tree nodes so they don't remain alive;
specifically, if mFolderTreeRoot is non-null, invoke its
Dispose/Unregister/Teardown method (or walk its children to detach handlers) and
then clear xFolderTreeView items before assigning a new instance and calling
xFolderTreeView.AddItem; apply the same teardown step to the other factory-based
replacement paths that assign to mFolderTreeRoot to ensure previous roots are
fully torn down.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 6723b70b-fc49-4a97-b05c-1202e4ab70f4

📥 Commits

Reviewing files that changed from the base of the PR and between 63ca8bf and 2dec07b.

📒 Files selected for processing (1)
  • Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs

Comment on lines +451 to +453
catch (Exception ex)
{
Reporter.ToLog(eLogLevel.ERROR, "Failed to refresh folder tree view", ex);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Use the repo’s standard error logging signature here.

The new catch block logs with the overload that includes ex. This repository’s C# guideline calls for Reporter.ToLog(eLogLevel.ERROR, message) for error logs.

📝 Proposed fix
-                Reporter.ToLog(eLogLevel.ERROR, "Failed to refresh folder tree view", ex);
+                Reporter.ToLog(eLogLevel.ERROR, $"Failed to refresh folder tree view: {ex}");

As per coding guidelines **/*.cs: Use Reporter.ToLog(eLogLevel.ERROR, message) for logging errors.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
catch (Exception ex)
{
Reporter.ToLog(eLogLevel.ERROR, "Failed to refresh folder tree view", ex);
catch (Exception ex)
{
Reporter.ToLog(eLogLevel.ERROR, $"Failed to refresh folder tree view: {ex}");
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs` around lines 451
- 453, The catch block in UcListView.xaml.cs currently calls
Reporter.ToLog(eLogLevel.ERROR, "Failed to refresh folder tree view", ex);
update it to use the repo-standard signature by removing the exception argument
and calling Reporter.ToLog(eLogLevel.ERROR, "Failed to refresh folder tree
view") instead (keep this change inside the same catch in the method where the
folder tree refresh is handled).

@ravirk91
ravirk91 enabled auto-merge (squash) March 9, 2026 08:22
@ravirk91
ravirk91 disabled auto-merge March 9, 2026 08:23
@ravirk91
ravirk91 merged commit 0284e27 into master Mar 9, 2026
14 checks passed
@ravirk91
ravirk91 deleted the Merge-2026.3-to-master branch March 9, 2026 08:23
ravirk91 added a commit that referenced this pull request Mar 31, 2026
* Update codeql-analysis.yml

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* Master for beta merge (#4429)

* Merge master into beta (#4418)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Feature/uft lab phone selection (#4414)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* added an api call to fetch the current devices in the UFT Mobile Agent configurations

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* added a button to see the phones when selecting utf device and select from the list

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* tested and fixed all edge cases of the device selection (wrong or empty fields and switching platform)

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* fixed uft devices button

* fixed the design and made a filtering for the phone list

* fixed phone lab filtering system

* Removed the task implementation in unix agent

* changed UI from rejects raised

* updated the ui design

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* fixed defect number 58085  (#4411)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* added the status code number in the json and the output of the rest api call

* Rename status code parameter for clarity

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Update version numbers in GingerCoreCommon.csproj

* Feature/android tv automation support (#4413)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Add Android TV support and enhance platform handling

Enhanced platform support by introducing Android TV as a new platform type (`ePlatformType.AndroidTV`) alongside Mobile and iOS. Updated platform descriptions to include "Mobile/TV" for better clarity and added new image types for visual representation.

UI components now display friendly platform descriptions and improved tooltips. Added ComboBox support for enum descriptions in grids.

Extended the Appium driver to support Android TV with specific capabilities, configurations. Improved error handling and fallback mechanisms for driver initialization.

Updated `ActMobileDevice` to include Android TV-specific actions and defaulted action descriptions to "Mobile/Tv Device Action."

Enhanced `DeviceViewPage` to handle Android TV resolutions and scaling. Added dynamic screen size calculations with fallbacks for Android TV.

Updated agent configurations to include Android TV as a selectable driver type and set default configurations for Android TV agents.

Refactored code for better maintainability, improved exception handling, and consolidated driver configuration logic. Added new image resources for Android TV.

Improved `GenericAppiumDriver` to handle Android TV-specific scenarios, including focused element detection and screenshot scaling.

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* enhancement relted android TV - livespy

* enhancement related to android TV

* Refactor and enhance platform-specific logic

Refactored multiple methods across the codebase to improve maintainability, performance, and platform-specific functionality. Key changes include:

- Simplified `timenow` method in `PomAllElementsPage.xaml.cs` with improved user feedback and streamlined logic.
- Enhanced `BitmapToBase64` in `PomLearnUtils.cs` with null-checks, fallback mechanisms, and better error handling.
- Removed redundant methods `LoadGingerLiveSpyScript` and `GetFocusedElementInfo` in `GenericAppiumDriver.cs`.
- Refactored `SimulatePhotoOrBarcode` to update `GingerLiveSpy.js` handling.
- Added platform-specific logic for `HighLightElement`, `GetElementAtMousePosition`, `FindElementXmlNodeByXY`, `GetElementAtPoint`, and `GetPointOnAppWindow` in `GenericAppiumDriver.cs` to support Android TV, Android (mobile), iOS, and Web.
- Improved shadow DOM support and optimized event handling in `GingerLiveSpy.js`.
- Enhanced error handling, logging, and fallback mechanisms across the codebase.

These changes improve cross-platform compatibility, user experience, and code maintainability.

* Refactor and improve code readability and performance

Refactored `ResizeDeviceButtons` and `GetDevicePoint` methods in `DeviceViewPage.xaml.cs` to simplify logic, remove redundant checks, and improve maintainability. Updated `eDeviceSource` enum in `MobileDriverCommon.cs` by removing `LambdaTest` and reassigning `AndroidTV`.

Replaced the license header in `GingerLiveSpy.js` with an updated Apache License 2.0 notice. Added a new `ElementFromPoint` method to determine the deepest DOM element at a specific point.

Refactored driver configuration logic in `AgentOperations.cs` to improve readability, simplify `DriverConfigParam` processing, enhance error handling, and remove duplicate code. Introduced a new `InitDriverConfigs` method for better organization.

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Enhancement/shared repository folder view2 (#4419)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* folder view fix

* merge conflict resolved

* merge conflict resolved

* enahcnement

* code rabbit comments handled

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Improve Sikuli SetValue handling and focus logic (#4420)

Refactored SetValue to check for empty text before typing and use KeyModifier.NONE for normal input. Now sets an error if the value is empty. Also, SetFocusToSelectedApplicationInstance is now called synchronously instead of asynchronously.

* Exclamation mark fix (#4421)

* Exclamation mark fix

* commit

* Improve circular reference handling in JSON schema tools (#4422)

Enhanced detection and prevention of circular references and stack overflows in JSON schema-to-object generation. Added try-catch blocks for safer property access, improved stack management, and more robust array/property traversal. Also improved error handling when adding API models to repository folders by logging and fallback to parent folder if needed.

* Add tests for circular refs in JsonSchemaFaker, update count (#4423)

Add unit tests to SwaggetTests.cs to ensure JsonSchemaFaker handles circular and self-referencing JSON schemas without infinite loops or errors. Import NJsonSchema for schema support. Update assertion for "Add a new pet to the store-JSON" to expect 7 return values instead of 8.

* Handled set DS value issue (#4425)

* add to BF iicon removal (#4426)

* add to BF iicon removal

* uncommented code

* code rabbit suggestion

---------

Co-authored-by: Ravi Kumar <[email protected]>

* resolved conflicts

* resolved conflicts

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Prevent Excel formula injection in CSV export (#4431)

* Prevent Excel formula injection in CSV export

D56006_Added logic to prefix values starting with '=', '+', '-', or '@' with a single quote when exporting BusinessFlow, Activity, Act description, and input parameters to CSV. This ensures spreadsheet applications treat these fields as plain text, preventing misinterpretation as formulas. Also refactored code for clarity using intermediate variables.

* Refactor CSV export for clarity and null safety

Renamed method parameters and loop variables for clarity and consistency. Updated references to use descriptive names. Added null check for act.Description to prevent exceptions. Improves code readability and robustness.

---------

Co-authored-by: tanushah <[email protected]>

* added an option to change text color in consoleDriver window

* Action Description fix (#4434)

* Update to .NET 10, package versions, and minor UI tweaks (#4435)

* Update to .NET 10, package versions, and minor UI tweaks

Upgraded all projects from .NET 8.0 to .NET 10.0. Updated System.Text.Json to 10.0.2 and System.Drawing.Common to 10.0.2. Added Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Tokens (8.15.0) to support JWT features. Bumped protobuf-net packages to 3.2.56. Improved XAML grid layout in DataSourceExportToExcelPage.xaml and added DesignerSerializationVisibility attributes in SnippingTool.cs. No functional logic changes.

* upgrade dotnet version to 10

* push supported dotnet version for Github actions

* Fix Dotnet version on Test stage

* Fix CLI TestsGithub

* Fix Test Dotnet Framework of Github with new version of dotnet

* nuget packages updation

* Downgrade EPPlus and Excel Interop, update dependencies

Downgraded EPPlus to 6.0.4 and Microsoft.Office.Interop.Excel to 15.0.4795.1001 across multiple projects for compatibility. Removed Microsoft.IdentityModel.* and System.IdentityModel.Tokens.Jwt from core projects, and removed SixLabors.ImageSharp from GingerCoreNET. Reformatted System.Globalization entry in GingerCore. These changes address dependency and compatibility issues.

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Mask API key in UI and update only on user edit (#4436)

* Mask API key in UI and update only on user edit

Added masking for API key in VRTExternalConfigurationsPage to prevent exposure. The real key is hidden with a generic mask, and only updated if the user changes the field. Existing key is preserved unless explicitly edited.

* Addition of validation

* updated validation

* updated validation rule

---------

Co-authored-by: tanushah <[email protected]>

* Fix codeql-config.yml file place

* Upgrade Github Actions versions

* Update license headers to 2026 and add missing headers (#4440)

Updated the copyright year in all license headers from 2014-2025 to 2014-2026 across the codebase. Added the standard license header to several files that were previously missing it. No functional code changes were made.

Co-authored-by: tanushah <[email protected]>

* Register serializer classes earlier; null check in IsReady (#4441)

Ensure MyRepositoryItem is registered with the serializer before test solution creation in SolutionRepositoryMultiThreadTest. Remove redundant registration call. Add null check to IsReady property in GingerSocket2Test to prevent possible NullReferenceException.

* Downgrade LibGit2Sharp.NativeBinaries to 2.0.278 (#4442)

Updated GingerCore.csproj and GingerCoreNET.csproj to use LibGit2Sharp.NativeBinaries version 2.0.278 instead of 2.0.323. No other changes were made.

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Updated the SSH and Cryptography nuget package to latest (#4432)

Co-authored-by: Ravi Kumar <[email protected]>

* contract update for pipeline run description (#4437)

Co-authored-by: Ravi Kumar <[email protected]>

* Added Code to allow Solution File to be loaded using SolutionRepository and changed version to 2026.3 (#4443)

Co-authored-by: Mayur Rathi <[email protected]>

* Refactor export query generation and persistence logic (#4447)

Rewrite CreateQueryWithWhereList to use LINQ for column selection, simplify WHERE clause construction with a switch statement, and return queries in the expected format. Update DataSourceExportToExcelPage to persist ExportQueryValue for both action and non-action table elements. Clean up code and improve maintainability.

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Updated to latest version of Magick.NET nuget due to vulnarability detected by Dependebot Github Security scan alert (#4451) (#4455)

Co-authored-by: Mayur Rathi <[email protected]>

* Merge 2026.3 to master (#4457)

* Merge master to official branch (#4444)

* Update codeql-analysis.yml

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* Master for beta merge (#4429)

* Merge master into beta (#4418)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Feature/uft lab phone selection (#4414)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* added an api call to fetch the current devices in the UFT Mobile Agent configurations

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* added a button to see the phones when selecting utf device and select from the list

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* tested and fixed all edge cases of the device selection (wrong or empty fields and switching platform)

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* fixed uft devices button

* fixed the design and made a filtering for the phone list

* fixed phone lab filtering system

* Removed the task implementation in unix agent

* changed UI from rejects raised

* updated the ui design

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* fixed defect number 58085  (#4411)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* added the status code number in the json and the output of the rest api call

* Rename status code parameter for clarity

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Update version numbers in GingerCoreCommon.csproj

* Feature/android tv automation support (#4413)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Add Android TV support and enhance platform handling

Enhanced platform support by introducing Android TV as a new platform type (`ePlatformType.AndroidTV`) alongside Mobile and iOS. Updated platform descriptions to include "Mobile/TV" for better clarity and added new image types for visual representation.

UI components now display friendly platform descriptions and improved tooltips. Added ComboBox support for enum descriptions in grids.

Extended the Appium driver to support Android TV with specific capabilities, configurations. Improved error handling and fallback mechanisms for driver initialization.

Updated `ActMobileDevice` to include Android TV-specific actions and defaulted action descriptions to "Mobile/Tv Device Action."

Enhanced `DeviceViewPage` to handle Android TV resolutions and scaling. Added dynamic screen size calculations with fallbacks for Android TV.

Updated agent configurations to include Android TV as a selectable driver type and set default configurations for Android TV agents.

Refactored code for better maintainability, improved exception handling, and consolidated driver configuration logic. Added new image resources for Android TV.

Improved `GenericAppiumDriver` to handle Android TV-specific scenarios, including focused element detection and screenshot scaling.

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* enhancement relted android TV - livespy

* enhancement related to android TV

* Refactor and enhance platform-specific logic

Refactored multiple methods across the codebase to improve maintainability, performance, and platform-specific functionality. Key changes include:

- Simplified `timenow` method in `PomAllElementsPage.xaml.cs` with improved user feedback and streamlined logic.
- Enhanced `BitmapToBase64` in `PomLearnUtils.cs` with null-checks, fallback mechanisms, and better error handling.
- Removed redundant methods `LoadGingerLiveSpyScript` and `GetFocusedElementInfo` in `GenericAppiumDriver.cs`.
- Refactored `SimulatePhotoOrBarcode` to update `GingerLiveSpy.js` handling.
- Added platform-specific logic for `HighLightElement`, `GetElementAtMousePosition`, `FindElementXmlNodeByXY`, `GetElementAtPoint`, and `GetPointOnAppWindow` in `GenericAppiumDriver.cs` to support Android TV, Android (mobile), iOS, and Web.
- Improved shadow DOM support and optimized event handling in `GingerLiveSpy.js`.
- Enhanced error handling, logging, and fallback mechanisms across the codebase.

These changes improve cross-platform compatibility, user experience, and code maintainability.

* Refactor and improve code readability and performance

Refactored `ResizeDeviceButtons` and `GetDevicePoint` methods in `DeviceViewPage.xaml.cs` to simplify logic, remove redundant checks, and improve maintainability. Updated `eDeviceSource` enum in `MobileDriverCommon.cs` by removing `LambdaTest` and reassigning `AndroidTV`.

Replaced the license header in `GingerLiveSpy.js` with an updated Apache License 2.0 notice. Added a new `ElementFromPoint` method to determine the deepest DOM element at a specific point.

Refactored driver configuration logic in `AgentOperations.cs` to improve readability, simplify `DriverConfigParam` processing, enhance error handling, and remove duplicate code. Introduced a new `InitDriverConfigs` method for better organization.

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Enhancement/shared repository folder view2 (#4419)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* folder view fix

* merge conflict resolved

* merge conflict resolved

* enahcnement

* code rabbit comments handled

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Improve Sikuli SetValue handling and focus logic (#4420)

Refactored SetValue to check for empty text before typing and use KeyModifier.NONE for normal input. Now sets an error if the value is empty. Also, SetFocusToSelectedApplicationInstance is now called synchronously instead of asynchronously.

* Exclamation mark fix (#4421)

* Exclamation mark fix

* commit

* Improve circular reference handling in JSON schema tools (#4422)

Enhanced detection and prevention of circular references and stack overflows in JSON schema-to-object generation. Added try-catch blocks for safer property access, improved stack management, and more robust array/property traversal. Also improved error handling when adding API models to repository folders by logging and fallback to parent folder if needed.

* Add tests for circular refs in JsonSchemaFaker, update count (#4423)

Add unit tests to SwaggetTests.cs to ensure JsonSchemaFaker handles circular and self-referencing JSON schemas without infinite loops or errors. Import NJsonSchema for schema support. Update assertion for "Add a new pet to the store-JSON" to expect 7 return values instead of 8.

* Handled set DS value issue (#4425)

* add to BF iicon removal (#4426)

* add to BF iicon removal

* uncommented code

* code rabbit suggestion

---------

Co-authored-by: Ravi Kumar <[email protected]>

* resolved conflicts

* resolved conflicts

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Prevent Excel formula injection in CSV export (#4431)

* Prevent Excel formula injection in CSV export

D56006_Added logic to prefix values starting with '=', '+', '-', or '@' with a single quote when exporting BusinessFlow, Activity, Act description, and input parameters to CSV. This ensures spreadsheet applications treat these fields as plain text, preventing misinterpretation as formulas. Also refactored code for clarity using intermediate variables.

* Refactor CSV export for clarity and null safety

Renamed method parameters and loop variables for clarity and consistency. Updated references to use descriptive names. Added null check for act.Description to prevent exceptions. Improves code readability and robustness.

---------

Co-authored-by: tanushah <[email protected]>

* added an option to change text color in consoleDriver window

* Action Description fix (#4434)

* Update to .NET 10, package versions, and minor UI tweaks (#4435)

* Update to .NET 10, package versions, and minor UI tweaks

Upgraded all projects from .NET 8.0 to .NET 10.0. Updated System.Text.Json to 10.0.2 and System.Drawing.Common to 10.0.2. Added Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Tokens (8.15.0) to support JWT features. Bumped protobuf-net packages to 3.2.56. Improved XAML grid layout in DataSourceExportToExcelPage.xaml and added DesignerSerializationVisibility attributes in SnippingTool.cs. No functional logic changes.

* upgrade dotnet version to 10

* push supported dotnet version for Github actions

* Fix Dotnet version on Test stage

* Fix CLI TestsGithub

* Fix Test Dotnet Framework of Github with new version of dotnet

* nuget packages updation

* Downgrade EPPlus and Excel Interop, update dependencies

Downgraded EPPlus to 6.0.4 and Microsoft.Office.Interop.Excel to 15.0.4795.1001 across multiple projects for compatibility. Removed Microsoft.IdentityModel.* and System.IdentityModel.Tokens.Jwt from core projects, and removed SixLabors.ImageSharp from GingerCoreNET. Reformatted System.Globalization entry in GingerCore. These changes address dependency and compatibility issues.

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Mask API key in UI and update only on user edit (#4436)

* Mask API key in UI and update only on user edit

Added masking for API key in VRTExternalConfigurationsPage to prevent exposure. The real key is hidden with a generic mask, and only updated if the user changes the field. Existing key is preserved unless explicitly edited.

* Addition of validation

* updated validation

* updated validation rule

---------

Co-authored-by: tanushah <[email protected]>

* Fix codeql-config.yml file place

* Upgrade Github Actions versions

* Update license headers to 2026 and add missing headers (#4440)

Updated the copyright year in all license headers from 2014-2025 to 2014-2026 across the codebase. Added the standard license header to several files that were previously missing it. No functional code changes were made.

Co-authored-by: tanushah <[email protected]>

* Register serializer classes earlier; null check in IsReady (#4441)

Ensure MyRepositoryItem is registered with the serializer before test solution creation in SolutionRepositoryMultiThreadTest. Remove redundant registration call. Add null check to IsReady property in GingerSocket2Test to prevent possible NullReferenceException.

* Downgrade LibGit2Sharp.NativeBinaries to 2.0.278 (#4442)

Updated GingerCore.csproj and GingerCoreNET.csproj to use LibGit2Sharp.NativeBinaries version 2.0.278 instead of 2.0.323. No other changes were made.

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Updated the SSH and Cryptography nuget package to latest (#4432)

Co-authored-by: Ravi Kumar <[email protected]>

* contract update for pipeline run description (#4437)

Co-authored-by: Ravi Kumar <[email protected]>

* Added Code to allow Solution File to be loaded using SolutionRepository and changed version to 2026.3 (#4443)

Co-authored-by: Mayur Rathi <[email protected]>

---------

Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>
Co-authored-by: Omri Agady <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Updated ginger core common nuget version (#4445)

* Revert solution iteminfo from SolutionRepository

* updated nuget version for publishing

---------

Co-authored-by: Mayur Rathi <[email protected]>

* Allow Fetching/Updating Ginger.Solution.xml through SolutionRepository/parser service

* Need to Update GingerCoreCommon Version to generate new nuget package

* Updated to latest version of Magick.NET nuget due to vulnarability detected by Dependebot Github Security scan alert (#4451)

Co-authored-by: Mayur Rathi <[email protected]>

* Enhance API Key encryption and remove masking logic (#4449…
ravirk91 added a commit that referenced this pull request May 7, 2026
* Update codeql-analysis.yml

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* Master for beta merge (#4429)

* Merge master into beta (#4418)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Feature/uft lab phone selection (#4414)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* added an api call to fetch the current devices in the UFT Mobile Agent configurations

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* added a button to see the phones when selecting utf device and select from the list

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* tested and fixed all edge cases of the device selection (wrong or empty fields and switching platform)

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* fixed uft devices button

* fixed the design and made a filtering for the phone list

* fixed phone lab filtering system

* Removed the task implementation in unix agent

* changed UI from rejects raised

* updated the ui design

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* fixed defect number 58085  (#4411)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* added the status code number in the json and the output of the rest api call

* Rename status code parameter for clarity

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Update version numbers in GingerCoreCommon.csproj

* Feature/android tv automation support (#4413)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Add Android TV support and enhance platform handling

Enhanced platform support by introducing Android TV as a new platform type (`ePlatformType.AndroidTV`) alongside Mobile and iOS. Updated platform descriptions to include "Mobile/TV" for better clarity and added new image types for visual representation.

UI components now display friendly platform descriptions and improved tooltips. Added ComboBox support for enum descriptions in grids.

Extended the Appium driver to support Android TV with specific capabilities, configurations. Improved error handling and fallback mechanisms for driver initialization.

Updated `ActMobileDevice` to include Android TV-specific actions and defaulted action descriptions to "Mobile/Tv Device Action."

Enhanced `DeviceViewPage` to handle Android TV resolutions and scaling. Added dynamic screen size calculations with fallbacks for Android TV.

Updated agent configurations to include Android TV as a selectable driver type and set default configurations for Android TV agents.

Refactored code for better maintainability, improved exception handling, and consolidated driver configuration logic. Added new image resources for Android TV.

Improved `GenericAppiumDriver` to handle Android TV-specific scenarios, including focused element detection and screenshot scaling.

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* enhancement relted android TV - livespy

* enhancement related to android TV

* Refactor and enhance platform-specific logic

Refactored multiple methods across the codebase to improve maintainability, performance, and platform-specific functionality. Key changes include:

- Simplified `timenow` method in `PomAllElementsPage.xaml.cs` with improved user feedback and streamlined logic.
- Enhanced `BitmapToBase64` in `PomLearnUtils.cs` with null-checks, fallback mechanisms, and better error handling.
- Removed redundant methods `LoadGingerLiveSpyScript` and `GetFocusedElementInfo` in `GenericAppiumDriver.cs`.
- Refactored `SimulatePhotoOrBarcode` to update `GingerLiveSpy.js` handling.
- Added platform-specific logic for `HighLightElement`, `GetElementAtMousePosition`, `FindElementXmlNodeByXY`, `GetElementAtPoint`, and `GetPointOnAppWindow` in `GenericAppiumDriver.cs` to support Android TV, Android (mobile), iOS, and Web.
- Improved shadow DOM support and optimized event handling in `GingerLiveSpy.js`.
- Enhanced error handling, logging, and fallback mechanisms across the codebase.

These changes improve cross-platform compatibility, user experience, and code maintainability.

* Refactor and improve code readability and performance

Refactored `ResizeDeviceButtons` and `GetDevicePoint` methods in `DeviceViewPage.xaml.cs` to simplify logic, remove redundant checks, and improve maintainability. Updated `eDeviceSource` enum in `MobileDriverCommon.cs` by removing `LambdaTest` and reassigning `AndroidTV`.

Replaced the license header in `GingerLiveSpy.js` with an updated Apache License 2.0 notice. Added a new `ElementFromPoint` method to determine the deepest DOM element at a specific point.

Refactored driver configuration logic in `AgentOperations.cs` to improve readability, simplify `DriverConfigParam` processing, enhance error handling, and remove duplicate code. Introduced a new `InitDriverConfigs` method for better organization.

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Enhancement/shared repository folder view2 (#4419)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* folder view fix

* merge conflict resolved

* merge conflict resolved

* enahcnement

* code rabbit comments handled

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Improve Sikuli SetValue handling and focus logic (#4420)

Refactored SetValue to check for empty text before typing and use KeyModifier.NONE for normal input. Now sets an error if the value is empty. Also, SetFocusToSelectedApplicationInstance is now called synchronously instead of asynchronously.

* Exclamation mark fix (#4421)

* Exclamation mark fix

* commit

* Improve circular reference handling in JSON schema tools (#4422)

Enhanced detection and prevention of circular references and stack overflows in JSON schema-to-object generation. Added try-catch blocks for safer property access, improved stack management, and more robust array/property traversal. Also improved error handling when adding API models to repository folders by logging and fallback to parent folder if needed.

* Add tests for circular refs in JsonSchemaFaker, update count (#4423)

Add unit tests to SwaggetTests.cs to ensure JsonSchemaFaker handles circular and self-referencing JSON schemas without infinite loops or errors. Import NJsonSchema for schema support. Update assertion for "Add a new pet to the store-JSON" to expect 7 return values instead of 8.

* Handled set DS value issue (#4425)

* add to BF iicon removal (#4426)

* add to BF iicon removal

* uncommented code

* code rabbit suggestion

---------

Co-authored-by: Ravi Kumar <[email protected]>

* resolved conflicts

* resolved conflicts

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Prevent Excel formula injection in CSV export (#4431)

* Prevent Excel formula injection in CSV export

D56006_Added logic to prefix values starting with '=', '+', '-', or '@' with a single quote when exporting BusinessFlow, Activity, Act description, and input parameters to CSV. This ensures spreadsheet applications treat these fields as plain text, preventing misinterpretation as formulas. Also refactored code for clarity using intermediate variables.

* Refactor CSV export for clarity and null safety

Renamed method parameters and loop variables for clarity and consistency. Updated references to use descriptive names. Added null check for act.Description to prevent exceptions. Improves code readability and robustness.

---------

Co-authored-by: tanushah <[email protected]>

* added an option to change text color in consoleDriver window

* Action Description fix (#4434)

* Update to .NET 10, package versions, and minor UI tweaks (#4435)

* Update to .NET 10, package versions, and minor UI tweaks

Upgraded all projects from .NET 8.0 to .NET 10.0. Updated System.Text.Json to 10.0.2 and System.Drawing.Common to 10.0.2. Added Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Tokens (8.15.0) to support JWT features. Bumped protobuf-net packages to 3.2.56. Improved XAML grid layout in DataSourceExportToExcelPage.xaml and added DesignerSerializationVisibility attributes in SnippingTool.cs. No functional logic changes.

* upgrade dotnet version to 10

* push supported dotnet version for Github actions

* Fix Dotnet version on Test stage

* Fix CLI TestsGithub

* Fix Test Dotnet Framework of Github with new version of dotnet

* nuget packages updation

* Downgrade EPPlus and Excel Interop, update dependencies

Downgraded EPPlus to 6.0.4 and Microsoft.Office.Interop.Excel to 15.0.4795.1001 across multiple projects for compatibility. Removed Microsoft.IdentityModel.* and System.IdentityModel.Tokens.Jwt from core projects, and removed SixLabors.ImageSharp from GingerCoreNET. Reformatted System.Globalization entry in GingerCore. These changes address dependency and compatibility issues.

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Mask API key in UI and update only on user edit (#4436)

* Mask API key in UI and update only on user edit

Added masking for API key in VRTExternalConfigurationsPage to prevent exposure. The real key is hidden with a generic mask, and only updated if the user changes the field. Existing key is preserved unless explicitly edited.

* Addition of validation

* updated validation

* updated validation rule

---------

Co-authored-by: tanushah <[email protected]>

* Fix codeql-config.yml file place

* Upgrade Github Actions versions

* Update license headers to 2026 and add missing headers (#4440)

Updated the copyright year in all license headers from 2014-2025 to 2014-2026 across the codebase. Added the standard license header to several files that were previously missing it. No functional code changes were made.

Co-authored-by: tanushah <[email protected]>

* Register serializer classes earlier; null check in IsReady (#4441)

Ensure MyRepositoryItem is registered with the serializer before test solution creation in SolutionRepositoryMultiThreadTest. Remove redundant registration call. Add null check to IsReady property in GingerSocket2Test to prevent possible NullReferenceException.

* Downgrade LibGit2Sharp.NativeBinaries to 2.0.278 (#4442)

Updated GingerCore.csproj and GingerCoreNET.csproj to use LibGit2Sharp.NativeBinaries version 2.0.278 instead of 2.0.323. No other changes were made.

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Updated the SSH and Cryptography nuget package to latest (#4432)

Co-authored-by: Ravi Kumar <[email protected]>

* contract update for pipeline run description (#4437)

Co-authored-by: Ravi Kumar <[email protected]>

* Added Code to allow Solution File to be loaded using SolutionRepository and changed version to 2026.3 (#4443)

Co-authored-by: Mayur Rathi <[email protected]>

* Refactor export query generation and persistence logic (#4447)

Rewrite CreateQueryWithWhereList to use LINQ for column selection, simplify WHERE clause construction with a switch statement, and return queries in the expected format. Update DataSourceExportToExcelPage to persist ExportQueryValue for both action and non-action table elements. Clean up code and improve maintainability.

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Updated to latest version of Magick.NET nuget due to vulnarability detected by Dependebot Github Security scan alert (#4451) (#4455)

Co-authored-by: Mayur Rathi <[email protected]>

* Merge 2026.3 to master (#4457)

* Merge master to official branch (#4444)

* Update codeql-analysis.yml

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* Master for beta merge (#4429)

* Merge master into beta (#4418)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Feature/uft lab phone selection (#4414)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* added an api call to fetch the current devices in the UFT Mobile Agent configurations

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* added a button to see the phones when selecting utf device and select from the list

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* tested and fixed all edge cases of the device selection (wrong or empty fields and switching platform)

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* fixed uft devices button

* fixed the design and made a filtering for the phone list

* fixed phone lab filtering system

* Removed the task implementation in unix agent

* changed UI from rejects raised

* updated the ui design

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* fixed defect number 58085  (#4411)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* added the status code number in the json and the output of the rest api call

* Rename status code parameter for clarity

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Update version numbers in GingerCoreCommon.csproj

* Feature/android tv automation support (#4413)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Add Android TV support and enhance platform handling

Enhanced platform support by introducing Android TV as a new platform type (`ePlatformType.AndroidTV`) alongside Mobile and iOS. Updated platform descriptions to include "Mobile/TV" for better clarity and added new image types for visual representation.

UI components now display friendly platform descriptions and improved tooltips. Added ComboBox support for enum descriptions in grids.

Extended the Appium driver to support Android TV with specific capabilities, configurations. Improved error handling and fallback mechanisms for driver initialization.

Updated `ActMobileDevice` to include Android TV-specific actions and defaulted action descriptions to "Mobile/Tv Device Action."

Enhanced `DeviceViewPage` to handle Android TV resolutions and scaling. Added dynamic screen size calculations with fallbacks for Android TV.

Updated agent configurations to include Android TV as a selectable driver type and set default configurations for Android TV agents.

Refactored code for better maintainability, improved exception handling, and consolidated driver configuration logic. Added new image resources for Android TV.

Improved `GenericAppiumDriver` to handle Android TV-specific scenarios, including focused element detection and screenshot scaling.

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* enhancement relted android TV - livespy

* enhancement related to android TV

* Refactor and enhance platform-specific logic

Refactored multiple methods across the codebase to improve maintainability, performance, and platform-specific functionality. Key changes include:

- Simplified `timenow` method in `PomAllElementsPage.xaml.cs` with improved user feedback and streamlined logic.
- Enhanced `BitmapToBase64` in `PomLearnUtils.cs` with null-checks, fallback mechanisms, and better error handling.
- Removed redundant methods `LoadGingerLiveSpyScript` and `GetFocusedElementInfo` in `GenericAppiumDriver.cs`.
- Refactored `SimulatePhotoOrBarcode` to update `GingerLiveSpy.js` handling.
- Added platform-specific logic for `HighLightElement`, `GetElementAtMousePosition`, `FindElementXmlNodeByXY`, `GetElementAtPoint`, and `GetPointOnAppWindow` in `GenericAppiumDriver.cs` to support Android TV, Android (mobile), iOS, and Web.
- Improved shadow DOM support and optimized event handling in `GingerLiveSpy.js`.
- Enhanced error handling, logging, and fallback mechanisms across the codebase.

These changes improve cross-platform compatibility, user experience, and code maintainability.

* Refactor and improve code readability and performance

Refactored `ResizeDeviceButtons` and `GetDevicePoint` methods in `DeviceViewPage.xaml.cs` to simplify logic, remove redundant checks, and improve maintainability. Updated `eDeviceSource` enum in `MobileDriverCommon.cs` by removing `LambdaTest` and reassigning `AndroidTV`.

Replaced the license header in `GingerLiveSpy.js` with an updated Apache License 2.0 notice. Added a new `ElementFromPoint` method to determine the deepest DOM element at a specific point.

Refactored driver configuration logic in `AgentOperations.cs` to improve readability, simplify `DriverConfigParam` processing, enhance error handling, and remove duplicate code. Introduced a new `InitDriverConfigs` method for better organization.

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Enhancement/shared repository folder view2 (#4419)

* Mobile accessibility issue for ios - fix

* added CodeQL WF

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* removed macOS build steps

* Java Explorer issue fix

* Update codeql-analysis.yml

excluding unwanted folders and projects

* Update README.md

updating for triggering security

* mobily accessibility locators identification issue fix

* codeql related updates

* coderabbit comments handled

* Fix: GitHub SecurityAlerts 198,199, 200, 201, 202

* its tested and working

* Codecy suggestions

* CodeRabit Suggestions

* CodeRabbit suggestions

* CodeRabbit Suggestions

* Fix for Git Security Alert 181

* codacy suggestions

* RemovedUnusedMethod

* Pull all variables  except password variables

* Removing code that passes Ginger variables to Robot script using temp file

* Revert "Removing code that passes Ginger variables to Robot script using temp file"

This reverts commit c62b1428dfecc31b178de767073a22de26682a1c.

* Fixed DBoperations Git Alerts

* Build Errors Fixed

* Removed Unused GingerExecutionReport folder from Ginger also handled few codacy comments

* Code Issues

* Enabled only Windows build for CodeQL

* added variable option

* MSSQL Fix Test

* Test Changes

* Bar user inputted connection string.

* Not using GetConnectionString method

* added removing variable value code

* code rabbit suggested changes

* code rabbit changes

* Do not assign the Expression to mValueCalculated if it was failed to evaluate.

* Enhancement Excel Action and Refactoring

* code refactor

* Enhanced the Unit test cases for excel action according to recent enhancements

* Codacy issues

* Upgraded Magick.NET-Q16-AnyCPU nugget to 14.10.0

* codacy

* removed unwanted check

* code refactoring

* updated ut

* codacy and code rabbit comments handled

* Pull Address adjustment

* serliazation added

* Serliazation error fix

* updating version

updating version

* Latest changes for Excel action

* workwork book

* coderabbit comments

* lock object

* coder rabbit issue

* Handled the file name length while api model configuration, and added length to subfolder creation

* resolved the review comment from code rabbit

* Handled the issue of value expression getting truncated

* fixing the index issue

* Update codeql-analysis.yml

* Exclude JavaScript from Scanning for security Vulnarabilities

* Exclude JavaScript from Scanning for security Vulnarabilities_Master

* store to added hidden option

* removed code

* code refactor

* code refactor

* Update codeql-analysis.yml

* Revert

* Bug fixes for excel action

* code removed

* coderabbit comments

* filter issue fix

* As stated in bug: modifed error log to "Error" instead of "Warning"

* push latest fixes

* unit test case change according to enhancement

* Latest

* Rollbacked the changes made for handling the file name length

* Modified code to support maxlength only for folder name

* Removed the task implementation in unix agent

* Fixed issue of special characters from toerh languages are not getting sent to mainframe

* Shared Repository Folder View (#4416)

* Shared Repository Folder View

* enhancement

* code rabbit comments handled

* code rabbit comments handle

---------

Co-authored-by: Ravi Kumar <[email protected]>

* folder view fix

* merge conflict resolved

* merge conflict resolved

* enahcnement

* code rabbit comments handled

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>

* Improve Sikuli SetValue handling and focus logic (#4420)

Refactored SetValue to check for empty text before typing and use KeyModifier.NONE for normal input. Now sets an error if the value is empty. Also, SetFocusToSelectedApplicationInstance is now called synchronously instead of asynchronously.

* Exclamation mark fix (#4421)

* Exclamation mark fix

* commit

* Improve circular reference handling in JSON schema tools (#4422)

Enhanced detection and prevention of circular references and stack overflows in JSON schema-to-object generation. Added try-catch blocks for safer property access, improved stack management, and more robust array/property traversal. Also improved error handling when adding API models to repository folders by logging and fallback to parent folder if needed.

* Add tests for circular refs in JsonSchemaFaker, update count (#4423)

Add unit tests to SwaggetTests.cs to ensure JsonSchemaFaker handles circular and self-referencing JSON schemas without infinite loops or errors. Import NJsonSchema for schema support. Update assertion for "Add a new pet to the store-JSON" to expect 7 return values instead of 8.

* Handled set DS value issue (#4425)

* add to BF iicon removal (#4426)

* add to BF iicon removal

* uncommented code

* code rabbit suggestion

---------

Co-authored-by: Ravi Kumar <[email protected]>

* resolved conflicts

* resolved conflicts

---------

Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>

* Prevent Excel formula injection in CSV export (#4431)

* Prevent Excel formula injection in CSV export

D56006_Added logic to prefix values starting with '=', '+', '-', or '@' with a single quote when exporting BusinessFlow, Activity, Act description, and input parameters to CSV. This ensures spreadsheet applications treat these fields as plain text, preventing misinterpretation as formulas. Also refactored code for clarity using intermediate variables.

* Refactor CSV export for clarity and null safety

Renamed method parameters and loop variables for clarity and consistency. Updated references to use descriptive names. Added null check for act.Description to prevent exceptions. Improves code readability and robustness.

---------

Co-authored-by: tanushah <[email protected]>

* added an option to change text color in consoleDriver window

* Action Description fix (#4434)

* Update to .NET 10, package versions, and minor UI tweaks (#4435)

* Update to .NET 10, package versions, and minor UI tweaks

Upgraded all projects from .NET 8.0 to .NET 10.0. Updated System.Text.Json to 10.0.2 and System.Drawing.Common to 10.0.2. Added Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Tokens (8.15.0) to support JWT features. Bumped protobuf-net packages to 3.2.56. Improved XAML grid layout in DataSourceExportToExcelPage.xaml and added DesignerSerializationVisibility attributes in SnippingTool.cs. No functional logic changes.

* upgrade dotnet version to 10

* push supported dotnet version for Github actions

* Fix Dotnet version on Test stage

* Fix CLI TestsGithub

* Fix Test Dotnet Framework of Github with new version of dotnet

* nuget packages updation

* Downgrade EPPlus and Excel Interop, update dependencies

Downgraded EPPlus to 6.0.4 and Microsoft.Office.Interop.Excel to 15.0.4795.1001 across multiple projects for compatibility. Removed Microsoft.IdentityModel.* and System.IdentityModel.Tokens.Jwt from core projects, and removed SixLabors.ImageSharp from GingerCoreNET. Reformatted System.Globalization entry in GingerCore. These changes address dependency and compatibility issues.

---------

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Mask API key in UI and update only on user edit (#4436)

* Mask API key in UI and update only on user edit

Added masking for API key in VRTExternalConfigurationsPage to prevent exposure. The real key is hidden with a generic mask, and only updated if the user changes the field. Existing key is preserved unless explicitly edited.

* Addition of validation

* updated validation

* updated validation rule

---------

Co-authored-by: tanushah <[email protected]>

* Fix codeql-config.yml file place

* Upgrade Github Actions versions

* Update license headers to 2026 and add missing headers (#4440)

Updated the copyright year in all license headers from 2014-2025 to 2014-2026 across the codebase. Added the standard license header to several files that were previously missing it. No functional code changes were made.

Co-authored-by: tanushah <[email protected]>

* Register serializer classes earlier; null check in IsReady (#4441)

Ensure MyRepositoryItem is registered with the serializer before test solution creation in SolutionRepositoryMultiThreadTest. Remove redundant registration call. Add null check to IsReady property in GingerSocket2Test to prevent possible NullReferenceException.

* Downgrade LibGit2Sharp.NativeBinaries to 2.0.278 (#4442)

Updated GingerCore.csproj and GingerCoreNET.csproj to use LibGit2Sharp.NativeBinaries version 2.0.278 instead of 2.0.323. No other changes were made.

Co-authored-by: tanushah <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>

* Updated the SSH and Cryptography nuget package to latest (#4432)

Co-authored-by: Ravi Kumar <[email protected]>

* contract update for pipeline run description (#4437)

Co-authored-by: Ravi Kumar <[email protected]>

* Added Code to allow Solution File to be loaded using SolutionRepository and changed version to 2026.3 (#4443)

Co-authored-by: Mayur Rathi <[email protected]>

---------

Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: shahanemahesh <[email protected]>
Co-authored-by: Mahesh Shahane <[email protected]>
Co-authored-by: AMAN PRASAD <[email protected]>
Co-authored-by: Mahesh Kale <[email protected]>
Co-authored-by: makhlaque <[email protected]>
Co-authored-by: mohd-amdocs <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: Meni Kadosh <[email protected]>
Co-authored-by: Mayur Rathi <[email protected]>
Co-authored-by: Gokul Bothe <[email protected]>
Co-authored-by: omri1911 <[email protected]>
Co-authored-by: tanushahande2003 <[email protected]>
Co-authored-by: tanushah <[email protected]>
Co-authored-by: Omri Agady <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>
Co-authored-by: Nadeem Jazmawe <[email protected]>

* Updated ginger core common nuget version (#4445)

* Revert solution iteminfo from SolutionRepository

* updated nuget version for publishing

---------

Co-authored-by: Mayur Rathi <[email protected]>

* Allow Fetching/Updating Ginger.Solution.xml through SolutionRepository/parser service

* Need to Update GingerCoreCommon Version to generate new nuget package

* Updated to latest version of Magick.NET nuget due to vulnarability detected by Dependebot Github Security scan alert (#4451)

Co-authored-by: Mayur Rathi <[email protected]>

* Enhance API Key encryption and remove masking logic (…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants