Skip to content

Conversation

@DropSnorz
Copy link
Owner

No description provided.

@coderabbitai
Copy link

coderabbitai bot commented Nov 4, 2025

Important

Review skipped

Auto reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

This change refactors the task progress UI binding architecture from direct component field access to property-based binding. TaskRunner removes a public disableError() API and updates bindings, while TaskBarController transitions component fields to private and introduces animated progress updates with timeline-based interpolation.

Changes

Cohort / File(s) Summary
Task UI Binding Refactor
owlplug-client/src/main/java/com/owlplug/core/components/TaskRunner.java, owlplug-client/src/main/java/com/owlplug/core/controllers/TaskBarController.java
TaskRunner removes disableError() public API, changes from direct component bindings to property-based accessors (progressProperty(), taskNameProperty()), and replaces remove(0) with removeFirst() for history. TaskBarController makes taskLabel and taskProgressBar fields private, adds internal progressProperty and taskNameProperty, introduces progressTimeline for animated progress updates via new updateProgress(double) method, updates error styling via setErrorLog() and resetErrorLog(), and exposes new public property accessors.
Progress Value Adjustment
owlplug-client/src/main/java/com/owlplug/plugin/tasks/PluginScanTask.java
Increases initial progress increment after starting collect phase from 10 to 20.

Sequence Diagram

sequenceDiagram
    participant Task as Task/Component
    participant Controller as TaskBarController
    participant Timeline as Timeline
    participant UI as ProgressBar UI
    
    Task->>Controller: updateProgress(newValue)
    Controller->>Controller: clamp negative to 0
    Controller->>Timeline: stop if running
    Controller->>Timeline: create animation KeyFrame
    Timeline->>Controller: animate delta over computed duration
    Controller->>UI: progressProperty.setValue(interpolated)
    UI->>UI: update progress visually
    
    Task->>Controller: setErrorLog(details)
    Controller->>UI: add "progress-bar-error" style
    Controller->>UI: show logsButton
    
    Task->>Controller: resetErrorLog()
    Controller->>UI: remove error style
    Controller->>UI: hide logsButton
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Property binding refactoring: Verify binding chain integrity between TaskRunner property accessors and TaskBarController bindings; confirm TaskRunner's removal of disableError() has no external dependencies.
  • Animation logic in updateProgress(): Review edge cases—clamping behavior for negative values, animation cancellation on rapid sequential updates, duration calculation for delta-based interpolation.
  • Error styling consistency: Ensure setErrorLog() and resetErrorLog() coordinate properly with existing error handling in task success/failure paths to avoid style conflicts.

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Description check ❓ Inconclusive No pull request description was provided by the author, making it impossible to assess whether any description exists. Provide a pull request description explaining the motivation, changes, and benefits of this refactoring to help reviewers understand the intent.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main changes: refactoring task runner bindings and adding timelined progress animation to UI updates.

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.

@DropSnorz
Copy link
Owner Author

@coderabbitai review

@coderabbitai
Copy link

coderabbitai bot commented Nov 4, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@DropSnorz DropSnorz self-assigned this Nov 4, 2025
@DropSnorz DropSnorz moved this to In Progress in OwlPlug 1.31 Nov 4, 2025
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ff5ff31 and 8791166.

📒 Files selected for processing (3)
  • owlplug-client/src/main/java/com/owlplug/core/components/TaskRunner.java (2 hunks)
  • owlplug-client/src/main/java/com/owlplug/core/controllers/TaskBarController.java (5 hunks)
  • owlplug-client/src/main/java/com/owlplug/plugin/tasks/PluginScanTask.java (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-11-03T18:35:06.941Z
Learnt from: DropSnorz
Repo: DropSnorz/OwlPlug PR: 359
File: owlplug-client/src/main/java/com/owlplug/plugin/tasks/PluginScanTask.java:104-113
Timestamp: 2025-11-03T18:35:06.941Z
Learning: In OwlPlug's PluginScanTask (owlplug-client/src/main/java/com/owlplug/plugin/tasks/PluginScanTask.java), all plugin paths are absolute paths, never relative, as they are normalized via FileUtils.convertPath before being stored or used as directory scopes.

Applied to files:

  • owlplug-client/src/main/java/com/owlplug/plugin/tasks/PluginScanTask.java
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Codacy Static Code Analysis
🔇 Additional comments (11)
owlplug-client/src/main/java/com/owlplug/plugin/tasks/PluginScanTask.java (1)

101-101: LGTM!

Doubling the initial progress increment provides better user feedback during the collection phase and aligns with the animated progress updates introduced in TaskBarController.

owlplug-client/src/main/java/com/owlplug/core/controllers/TaskBarController.java (6)

25-46: LGTM!

The new JavaFX animation and property imports support the property-based binding and animated progress updates.


57-69: LGTM!

Good encapsulation by making UI fields private and introducing property-based state management. The new progressProperty and taskNameProperty provide controlled access for bindings.


75-84: LGTM!

The property bindings correctly wire the internal state to UI components. The progressProperty listener enables animated updates while taskLabel directly binds to taskNameProperty.


137-156: LGTM!

The error handling methods properly manage UI state, telemetry, and user feedback. The setErrorLog method applies error styling and wires the logs button, while resetErrorLog cleans up the error state.


159-165: LGTM!

The property accessors follow standard JavaFX patterns and enable external components to bind to task state.


167-211: LGTM!

The animated progress update logic is well-implemented with proper edge case handling. The duration formula inversely scales with delta size, providing smooth animations for incremental updates. Timeline lifecycle management (stopping previous animations, cleanup on finish) is correct.

owlplug-client/src/main/java/com/owlplug/core/components/TaskRunner.java (4)

114-118: LGTM!

The defensive error handling properly addresses the edge case where a task fails without an exception, ensuring error state is logged and displayed to the user.


141-142: LGTM!

The binding changes correctly use the new property accessors from TaskBarController, aligning with the refactored property-based architecture.


147-148: LGTM!

The unbinding logic correctly cleans up the property bindings established in setCurrentTask.


156-156: No issues found—code is compatible with configured Java version.

The project is configured for Java 21 (as shown in pom.xml: <java.version>21</java.version>, <maven.compiler.source>21</maven.compiler.source>, <maven.compiler.target>21</maven.compiler.target>). The removeFirst() method, introduced in Java 21, is fully compatible with this configuration. The change from remove(0) to removeFirst() is appropriate.

@DropSnorz DropSnorz force-pushed the feat/smooth-progress branch from 8791166 to f88359c Compare November 4, 2025 19:14
@DropSnorz DropSnorz force-pushed the feat/smooth-progress branch from f88359c to 0bcd111 Compare November 4, 2025 19:19
@DropSnorz DropSnorz merged commit 6332cda into master Nov 5, 2025
3 checks passed
@github-project-automation github-project-automation bot moved this from In Progress to Done in OwlPlug 1.31 Nov 5, 2025
daniel-chiuratto-seabra pushed a commit to daniel-chiuratto-seabra/OwlPlug that referenced this pull request Nov 6, 2025
***********************************************************************
Merge pull request DropSnorz#392 from DropSnorz/feat/smooth-progress

Refactor task runner bindings and apply timelined progress

6332cda Arthur Poiret <[email protected]> on 05/11/2025 at 19:51
committed by GitHub <[email protected]>
***********************************************************************
daniel-chiuratto-seabra pushed a commit to daniel-chiuratto-seabra/OwlPlug that referenced this pull request Nov 6, 2025
***********************************************************************
Merge pull request DropSnorz#392 from DropSnorz/feat/smooth-progress

Refactor task runner bindings and apply timelined progress

6332cda Arthur Poiret <[email protected]> on 05/11/2025 at 19:51
committed by GitHub <[email protected]>
***********************************************************************
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants