Skip to content

Releases/beta published/beta 2025.5.1#4369

Merged
Maheshkale447 merged 39 commits into
masterfrom
Releases/Beta-Published/Beta-2025.5.1
Nov 24, 2025
Merged

Releases/beta published/beta 2025.5.1#4369
Maheshkale447 merged 39 commits into
masterfrom
Releases/Beta-Published/Beta-2025.5.1

Conversation

@Maheshkale447

@Maheshkale447 Maheshkale447 commented Nov 24, 2025

Copy link
Copy Markdown
Contributor

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

    • Added dynamic Java agent jar selection based on Java version for improved compatibility.
    • Enhanced console logging with new recording commands.
  • Bug Fixes

    • Fixed Excel import to remove empty rows during data processing.
    • Fixed condition grid initialization in data source page.
    • Improved null handling in driver initialization.
  • Refactoring

    • Restructured console driver with improved thread-safe buffering and window handling.
    • Streamlined Java agent implementation.
  • Removals

    • Removed Sikuli support subsystem.
  • Chores

    • Updated .NET runtime to version 8.0.22.
    • Updated dependencies and version metadata.

✏️ Tip: You can customize this high-level summary in your review settings.

Maheshkale447 and others added 30 commits November 13, 2025 21:39
@coderabbitai

coderabbitai Bot commented Nov 24, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

This PR restructures Java agent infrastructure, upgrades framework dependencies, renames console recording commands, introduces dynamic Java version detection for jar selection, implements thread-safe output buffering in console drivers, and removes the Sikuli integration module entirely. Visual Studio solution and .NET runtime versions are also updated.

Changes

Cohort / File(s) Summary
Version & Dependency Updates
Ginger/Ginger.sln, Ginger/GingerCoreCommon/GingerCoreCommon.csproj, Ginger/GingerCoreNET/GingerCoreNET.csproj, Ginger/GingerTest/GingerTest.csproj, Ginger/GingerInstallerScript.iss, Ginger/GingerInstallerScriptGithub.iss
Visual Studio solution upgraded from VS17 to VS18; Magick.NET-Q16-AnyCPU upgraded from 14.8.2 to 14.9.1 across multiple project files; .NET runtime dependencies updated from 8.0.0 to 8.0.22; assembly and version metadata bumped to 25.5.1
Java Agent Infrastructure Removal
Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/*
Deleted entire Java agent project artifacts including Eclipse metadata files (.classpath, .project, .settings), build configuration (GingerjarPublish.bat, GingerAgentBuild.xml, MANIFEST.MF), and packaging descriptor; removed 17+ Java source files including agent lifecycle (GingerAgent.java), UI components (GingerAgentFrame.java, GingerAgentStarterFrame.java), socket server (GingerJavaSocketServer.java), and Swing/UI interaction helpers (SwingHelper.java, XPathHelper.java, BrowserHelper.java, EditorHelper.java, ASCFHelper.java, Recorder.java, WaitForIdle.java, WindowMonitor.java, IXPath.java, PayLoad.java, Utils.java, FormsDumpInfo.java)
Java Application Launch Refactoring
Ginger/GingerCore/Actions/ActLaunchJavaWSApplication.cs, Ginger/Ginger/Actions/ActionEditPages/ActLaunchJavaWSApplicationEditPage.xaml.cs, Ginger/Ginger.csproj
Introduced dynamic Java version detection (GetJavaVersion, ExtractVersion, ExtractMajorVersion methods) to select between GingerAgent.jar (Java <=8) and JavaAgent_V25.jar (newer versions); added csproj entries to copy both jar files to output directory; updated attachment logic to use JarFilePath field populated from version-based selection
Console Command Enum & Recording Updates
Ginger/GingerCoreNET/ActionsLib/ActConsoleCommand.cs, Ginger/Ginger/Actions/ActionEditPages/ActConsoleCommandEditPage.xaml, Ginger/Ginger/Actions/ActionEditPages/ActConsoleCommandEditPage.xaml.cs, Ginger/GingerCoreNET/Drivers/CoreDrivers/Console/ConsoleDriverBase.cs
Replaced StartRecordingBuffer/StopRecordingBuffer/ReturnBufferContent with StartRecordingConsoleLogs/StopRecordingConsoleLogs/GetRecordedConsoleLogs throughout enum definition and usage; updated ActConsoleCommandEditPage to bind ConsoleActionComboBox to SelectedValueProperty instead of TextProperty; updated UI visibility and parameter handling for new recording command names
Console Driver Concurrency & Buffering
Ginger/GingerCoreNET/Drivers/CoreDrivers/Console/DOSConsoleDriver.cs, Ginger/GingerCoreNET/Drivers/CoreDrivers/Console/UnixShellDriver.cs
Implemented thread-safe StringBuilder-backed output buffer with lock synchronization (mProcessedLength tracking) in DOSConsoleDriver; added dispatcher-based console updates; reworked disconnect/close logic with robust resource cleanup; introduced CheckForExpectedString helper and updated SendCommand/WriteOutputsToConsole for thread-safe buffered output; added tcpClient field management in UnixShellDriver
Driver Lifecycle & Status Management
Ginger/Ginger/Drivers/DriversWindows/ConsoleDriverWindow.xaml.cs, Ginger/GingerCore/Drivers/MainFrame/MainFrameDriver.cs, Ginger/GingerCoreNET/RunLib/AgentOperations.cs, Ginger/GingerCoreNET/RunLib/DriverBase.cs
Added CloseDriverWindow message type to eDriverMessageType enum; enhanced ConsoleDriverWindow closing with graceful shutdown and event unsubscription; refactored MainFrameDriver startup to wait for window Loaded event before initializing dispatcher; added ManualResetEventSlim synchronization and timeout handling in AgentOperations for STA thread initialization; hardened RunAction with null Dispatcher checks
Console Action UI Updates
Ginger/Ginger/Actions/ActionEditPages/ActConsoleCommandEditPage.xaml, Ginger/Ginger/Actions/ActionEditPages/ActConsoleCommandEditPage.xaml.cs, Ginger/Ginger/Actions/ActionEditPages/ActDataSourcePage.xaml.cs, Ginger/Ginger/Actions/ActionEditPages/ActLaunchJavaWSApplicationEditPage.xaml.cs
ActConsoleCommandEditPage updated to use SelectedValue instead of SelectedItem for binding and selection changes; ActDataSourcePage now initializes grdCondition.DataSourceList binding in constructor; minor whitespace/formatting fixes in xaml files
Selenium & Web Driver Refinements
Ginger/GingerCoreNET/Drivers/CoreDrivers/Web/Selenium/SeleniumDriver.cs
Made "Selected" property recording conditional: only added for checkbox and radio button element types, improving property extraction accuracy
Wizard/UI Threading
Ginger/Ginger/WizardLib/WizardWindow.xaml.cs
Moved AIFineTuneBaseText initialization and initial xAIProcessingText.Text assignment onto UI thread via Dispatcher.Invoke to ensure thread-safe UI state setup
DataSource Handling
Ginger/Ginger/DataSource/ImportExcelWizardLib/ImportDataSourceFromExcelWizard.cs
Added conditional removal of entirely empty rows during Excel import via new RemoveEmptyRows(DataTable) private method when IsImportEmptyColumns is false
Sikuli Integration Removal
Ginger/GingerSikuliStandard/*
Deleted entire GingerSikuliStandard project directory including project file (.csproj, packages.config) and all source classes (Pattern.cs, Screen.cs, json_\*.cs classes, Key.cs, KeyModifier.cs, ActionResult.cs, SikuliActionException.cs, APILauncher.cs, Util.cs, ActionLog.cs)
Project Configuration Updates
Ginger/GingerCore/GingerCoreNET.csproj, Ginger/GingerRuntime/DotnetCoreHelper.cs
Removed GingerJavaAgent-related resource entries and ASCFPack folder reference from project file; added UnixShellDriver support to DotnetCoreHelper driver resolution logic

Sequence Diagram(s)

sequenceDiagram
    participant Client
    participant ActLaunchJavaWSApplication
    participant System as java -version
    participant VersionDetector
    participant JAR as Jar Selector
    participant Attacher
    
    Client->>ActLaunchJavaWSApplication: Start Java WS Application
    ActLaunchJavaWSApplication->>VersionDetector: GetJavaVersion(javaPath)
    VersionDetector->>System: Execute java -version
    System-->>VersionDetector: Version Output (e.g., "1.8.0" or "17.0.1")
    VersionDetector->>VersionDetector: ExtractMajorVersion()
    VersionDetector-->>ActLaunchJavaWSApplication: Major Version (8 or 17)
    
    alt Version <= 8
        ActLaunchJavaWSApplication->>JAR: Select GingerAgent.jar
        JAR-->>ActLaunchJavaWSApplication: JarFilePath = GingerAgent.jar
    else Version > 8
        ActLaunchJavaWSApplication->>JAR: Select JavaAgent_V25.jar
        JAR-->>ActLaunchJavaWSApplication: JarFilePath = JavaAgent_V25.jar
    end
    
    ActLaunchJavaWSApplication->>Attacher: Attach with JarFilePath
    Attacher->>Attacher: Build javaagent command
    Attacher-->>Client: Agent Attached
Loading
sequenceDiagram
    participant ConsoleDriver as DOSConsoleDriver
    participant ProcessOutput as Process Output
    participant Buffer as StringBuilder Buffer
    participant Dispatcher
    participant UI as Ginger UI
    
    ProcessOutput->>Buffer: Append output (thread-safe)
    Buffer->>Buffer: Lock acquired
    Buffer->>Buffer: Append to buffer
    Buffer->>Buffer: Track mProcessedLength
    Buffer->>Buffer: Lock released
    
    ConsoleDriver->>Buffer: ReadOutputs()
    Buffer->>Buffer: Lock acquired
    Buffer->>Buffer: Extract new output chunk
    Buffer->>Buffer: Update mProcessedLength
    Buffer->>Buffer: Lock released
    
    ConsoleDriver->>Dispatcher: Send buffered output (if ShowWindow)
    Dispatcher->>UI: Update console display
    UI-->>Dispatcher: Ack
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Areas requiring extra attention:

  • Java agent deletion & refactoring: The removal of 17+ Java source files eliminating agent lifecycle, UI interaction, and socket server logic is substantial. Cross-reference with ActLaunchJavaWSApplication.cs to verify the new jar-based approach fully replaces the deleted agent communication infrastructure.
  • DOSConsoleDriver threading & buffering: New lock-based synchronization, mProcessedLength tracking, and dispatcher-based UI updates introduce concurrency considerations. Verify thread safety of the StringBuilder buffer and synchronization boundaries, especially around partial reads and dispatcher message dispatch.
  • Java version detection logic: New ExtractMajorVersion parsing logic should be validated against various Java version output formats (1.8.0, 17.0.1, 21-ea, etc.) to ensure robust version extraction.
  • MainFrameDriver startup sequencing: Addition of window Loaded event waits and dispatcher initialization timing changes may affect driver lifecycle. Verify the fallback path and exception handling when window fails to load within expected timeframe.
  • Console command enum propagation: Verify all usages of StartRecordingBuffer, StopRecordingBuffer, and ReturnBufferContent have been replaced with the new enum values across the codebase (both UI and driver paths: Unix and DOS).
  • Sikuli project removal: Confirm no other parts of the codebase depend on GingerSikuliStandard classes or project references that are now deleted.

Possibly related PRs

  • added 1.6 build file #4368: Handles Ginger agent jar copying and swapping logic (GingerAgentStarter.jar in Ginger.csproj), directly related to the dynamic jar selection implementation.
  • Java code refactor #4362: Parallel deletion of GingerJavaAgent project artifacts and agent infrastructure; related to the major Java agent removal.
  • Removed unwatned project #4361: Overlapping changes including Ginger.sln VS version bump, Magick.NET package updates, and removal of GingerSikuliStandard project.

Suggested reviewers

  • prashelke

🐰 A rabbit's ode to this grand refactor so bold:

Old Java agents fade, new versions take flight,
Console buffers stream thread-safe and bright,
Sikuli bids farewell, the path grows more clear,
Ginger evolves forward, its future is here!

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch Releases/Beta-Published/Beta-2025.5.1

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a892a8b and e24d4aa.

⛔ Files ignored due to path filters (14)
  • .github/workflows/Build.yml is excluded by !**/*.yml
  • Extensions/DotnetDependencies/aspnetcore-runtime-8.0.22-win-x64.exe is excluded by !**/*.exe, !**/*.exe
  • Extensions/DotnetDependencies/windowsdesktop-runtime-8.0.22-win-x64.exe is excluded by !**/*.exe, !**/*.exe
  • Ginger/Ginger/GingerAgentStarter.xml is excluded by !**/*.xml
  • Ginger/Ginger/StaticDrivers/JavaAgent_V25.jar is excluded by !**/*.jar, !**/*.jar
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerAgentBuild.xml is excluded by !**/*.xml
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent.docx is excluded by !**/*.docx, !**/*.docx
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/GingerAgent.jar is excluded by !**/*.jar, !**/*.jar
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/GingerAgentStarter.jar is excluded by !**/*.jar, !**/*.jar
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/build.xml is excluded by !**/*.xml
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/jsoup.jar is excluded by !**/*.jar, !**/*.jar
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/xsoup.jar is excluded by !**/*.jar, !**/*.jar
  • Ginger/GingerSikuliStandard/dlls/JNI.dll is excluded by !**/*.dll, !**/*.dll
  • Ginger/component.xml is excluded by !**/*.xml
📒 Files selected for processing (72)
  • Ginger/Ginger.sln (1 hunks)
  • Ginger/Ginger/Actions/ActionEditPages/ActConsoleCommandEditPage.xaml (1 hunks)
  • Ginger/Ginger/Actions/ActionEditPages/ActConsoleCommandEditPage.xaml.cs (7 hunks)
  • Ginger/Ginger/Actions/ActionEditPages/ActDataSourcePage.xaml.cs (1 hunks)
  • Ginger/Ginger/Actions/ActionEditPages/ActLaunchJavaWSApplicationEditPage.xaml.cs (1 hunks)
  • Ginger/Ginger/DataSource/ImportExcelWizardLib/ImportDataSourceFromExcelWizard.cs (2 hunks)
  • Ginger/Ginger/Drivers/DriversWindows/ConsoleDriverWindow.xaml.cs (2 hunks)
  • Ginger/Ginger/Ginger.csproj (2 hunks)
  • Ginger/Ginger/WizardLib/WizardWindow.xaml.cs (1 hunks)
  • Ginger/GingerCore/Actions/ActLaunchJavaWSApplication.cs (5 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/.classpath (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/.externalToolBuilders/CreateJavaAgentJar.launch (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/.project (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/.settings/org.eclipse.jdt.core.prefs (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/GingerAgentJar.jardesc (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/GingerjarPreparation.bat (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/MANIFEST.MF (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/agent/com/amdocs/ginger/ASCFPack/ASCFHelper.java (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/agent/com/amdocs/ginger/BrowserHelper.java (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/agent/com/amdocs/ginger/EditorHelper.java (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/agent/com/amdocs/ginger/FormsDumpInfo.java (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/agent/com/amdocs/ginger/GingerAgent.java (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/agent/com/amdocs/ginger/GingerAgentFrame.java (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/agent/com/amdocs/ginger/GingerAgentStarterFrame.java (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/agent/com/amdocs/ginger/GingerJavaSocketServer.java (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/agent/com/amdocs/ginger/IXPath.java (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/agent/com/amdocs/ginger/PayLoad.java (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/agent/com/amdocs/ginger/Recorder.java (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/agent/com/amdocs/ginger/SwingHelper.java (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/agent/com/amdocs/ginger/Utils.java (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/agent/com/amdocs/ginger/WaitForIdle.java (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/agent/com/amdocs/ginger/WindowMonitor.java (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/agent/com/amdocs/ginger/XPathHelper.java (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/test/com/amdocs/ginger/BasicSwingApp.java (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/test/com/amdocs/ginger/BasicSwingComponents.java (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/test/com/amdocs/ginger/GingerAgentTestApp.java (0 hunks)
  • Ginger/GingerCore/Drivers/JavaDriverLib/GingerJavaAgent/test/com/amdocs/ginger/JEditorPaneExample.java (0 hunks)
  • Ginger/GingerCore/Drivers/MainFrame/MainFrameDriver.cs (2 hunks)
  • Ginger/GingerCore/GingerCore.csproj (0 hunks)
  • Ginger/GingerCoreCommon/GingerCoreCommon.csproj (1 hunks)
  • Ginger/GingerCoreNET/ActionsLib/ActConsoleCommand.cs (1 hunks)
  • Ginger/GingerCoreNET/Drivers/CoreDrivers/Console/ConsoleDriverBase.cs (2 hunks)
  • Ginger/GingerCoreNET/Drivers/CoreDrivers/Console/DOSConsoleDriver.cs (4 hunks)
  • Ginger/GingerCoreNET/Drivers/CoreDrivers/Console/UnixShellDriver.cs (4 hunks)
  • Ginger/GingerCoreNET/Drivers/CoreDrivers/Web/Selenium/SeleniumDriver.cs (1 hunks)
  • Ginger/GingerCoreNET/GingerCoreNET.csproj (1 hunks)
  • Ginger/GingerCoreNET/RunLib/AgentOperations.cs (3 hunks)
  • Ginger/GingerCoreNET/RunLib/DriverBase.cs (1 hunks)
  • Ginger/GingerInstallerScript.iss (2 hunks)
  • Ginger/GingerInstallerScriptGithub.iss (2 hunks)
  • Ginger/GingerRuntime/DotnetCoreHelper.cs (3 hunks)
  • Ginger/GingerSikuliStandard/GingerSikuliStandard.csproj (0 hunks)
  • Ginger/GingerSikuliStandard/packages.config (0 hunks)
  • Ginger/GingerSikuliStandard/sikuli_JSON/json_Click.cs (0 hunks)
  • Ginger/GingerSikuliStandard/sikuli_JSON/json_DragDrop.cs (0 hunks)
  • Ginger/GingerSikuliStandard/sikuli_JSON/json_Exists.cs (0 hunks)
  • Ginger/GingerSikuliStandard/sikuli_JSON/json_Find.cs (0 hunks)
  • Ginger/GingerSikuliStandard/sikuli_JSON/json_Pattern.cs (0 hunks)
  • Ginger/GingerSikuliStandard/sikuli_JSON/json_Result.cs (0 hunks)
  • Ginger/GingerSikuliStandard/sikuli_JSON/json_Type.cs (0 hunks)
  • Ginger/GingerSikuliStandard/sikuli_JSON/json_Wait.cs (0 hunks)
  • Ginger/GingerSikuliStandard/sikuli_JSON/json_WaitVanish.cs (0 hunks)
  • Ginger/GingerSikuliStandard/sikuli_REST/ActionLog.cs (0 hunks)
  • Ginger/GingerSikuliStandard/sikuli_REST/Key.cs (0 hunks)
  • Ginger/GingerSikuliStandard/sikuli_REST/KeyModifier.cs (0 hunks)
  • Ginger/GingerSikuliStandard/sikuli_REST/Pattern.cs (0 hunks)
  • Ginger/GingerSikuliStandard/sikuli_REST/Screen.cs (0 hunks)
  • Ginger/GingerSikuliStandard/sikuli_UTIL/APILauncher.cs (0 hunks)
  • Ginger/GingerSikuliStandard/sikuli_UTIL/ActionResult.cs (0 hunks)
  • Ginger/GingerSikuliStandard/sikuli_UTIL/SikuliActionException.cs (0 hunks)
  • Ginger/GingerSikuliStandard/sikuli_UTIL/Util.cs (0 hunks)
  • Ginger/GingerTest/GingerTest.csproj (1 hunks)

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.

@Maheshkale447
Maheshkale447 merged commit 0b49dc3 into master Nov 24, 2025
29 of 35 checks passed
@coderabbitai coderabbitai Bot mentioned this pull request Dec 1, 2025
15 tasks
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