Skip to content

Show persistent best practice results in workflow editor#19546

Merged
mvdbeek merged 49 commits intogalaxyproject:devfrom
mvdbeek:persistent_best_practice_results
Feb 17, 2026
Merged

Show persistent best practice results in workflow editor#19546
mvdbeek merged 49 commits intogalaxyproject:devfrom
mvdbeek:persistent_best_practice_results

Conversation

@mvdbeek
Copy link
Copy Markdown
Member

@mvdbeek mvdbeek commented Feb 5, 2025

Persistent and Reactive Best Practices in Workflow Editor

This PR significantly improves the Best Practices activity in the workflow editor, making it persistent, reactive, and
more user-friendly. It also adds the ability to refactor specific workflow versions and updates the workflow object on every save (updating step indices to prevent having inconsistent indices).

persistent_best_practice_results_FINAL.mp4

Best Practices Activity Improvements

Progress Tracking & Visual Feedback

  • Progress indicators show resolved vs total issues on both the activity icon and within the panel
  • Separate sections for critical (high priority) issues and attribute-based recommendations
  • 🎉 Success reaction when all best practices are met
Progress Indication/Separate Sections Celebratory Reaction when done🎉
Showing Workflow Editor Best Practices panel with separate sections and counters Showing Workflow Editor Best Practices panel success reaction when all practices are met

Loading overlay during workflow save operations

New Workflow Editor Loading Overlay
Showing Workflow Editor loading overlay when workflow is saved

Interactive Highlighting

  • Hover highlighting on lint items highlights the corresponding step/input/output on the workflow graph
  • Duplicate output labels detection added as a new lint check

Workflow Version Selector Improvements

  • New multiselect component replaces the old version dropdown with better UX
  • "Switch to latest version" link appears when editing an older version
  • "(latest version)" indicator when on the current version
firefox_upQKYGbq6Z

Refactoring Specific Workflow Versions

A new feature allowing users to refactor a specific workflow version (not just the latest):

  • Added optional version parameter to the refactor workflow API endpoint
  • Confirmation dialog prompts users when attempting to refactor a non-latest version
  • The refactored version becomes the new latest version
persistent_best_practice_results_Refactor_old_v.mp4

Viewport Transform Retention

Fixes the issue where the viewport would jump after saving or refactoring:

  • Transform adjustment compensates for coordinate shifts computed by the backend during normalization
  • Extracted to useWorkflowBoundingBox composable with comprehensive tests

Bug Fixes & Polish

  • Refactored inputs no longer overlap - new inputs created during refactors are positioned to avoid existing steps
  • Active step form reopens after save - if editing a step when saving, that step's form reopens after the save
    completes (since now we _loadCurrent on every save)
  • Step indices stay consistent - saves now properly update step indices to match backend state
  • Converted Lint.vue, LintSection.vue, and RefactorConfirmationModal.vue to Composition API + TypeScript

Initial description by Marius

People just keep on creating workflows with disconnected inputs, I really want this to be front and center.

disconnected required inputs

How to test the changes?

(Select all options that apply)

  • I've included appropriate automated tests.
  • This is a refactoring of components with existing test coverage.
  • Instructions for manual testing are as follows:
  1. [add testing steps and prerequisites here if you didn't write automated tests covering all your changes]

License

  • I agree to license these and all my past contributions to the core galaxy codebase under the MIT license.

@mvdbeek mvdbeek changed the title Persistent best practice results Show persistent best practice results in workflow editor Feb 5, 2025
@github-actions github-actions Bot added this to the 25.0 milestone Feb 5, 2025
@mvdbeek mvdbeek marked this pull request as draft February 5, 2025 15:54
Comment thread client/src/components/Workflow/Editor/modules/activities.ts
@mvdbeek
Copy link
Copy Markdown
Member Author

mvdbeek commented Feb 6, 2025

Just noticed that disconnected when inputs don't appear ... they definitely should though.

@ahmedhamidawan ahmedhamidawan self-assigned this May 6, 2025
@ahmedhamidawan ahmedhamidawan force-pushed the persistent_best_practice_results branch from 707c516 to 57b4595 Compare May 6, 2025 20:07
@ahmedhamidawan ahmedhamidawan modified the milestones: 25.0, 25.1 May 9, 2025
@mvdbeek mvdbeek mentioned this pull request Aug 4, 2025
@ahmedhamidawan ahmedhamidawan modified the milestones: 25.1, 26.0 Sep 23, 2025
@ahmedhamidawan ahmedhamidawan force-pushed the persistent_best_practice_results branch from 57b4595 to bbeb38e Compare January 22, 2026 00:24
@ahmedhamidawan
Copy link
Copy Markdown
Member

ahmedhamidawan commented Jan 23, 2026

I've made minor additions here, and provided a screencast at the top. Will provide a detailed description once all is complete.

For now, there are a few remaining items/bugs I am working on:

  • The hover highlighting on inputs/outputs/entire steps can also be inaccurate when there are changes made and saved (seems like a store update is needed for positioning)
  • Jests need to be fixed/updated ✅ Fixed! I've added extensive vitests for best practices that should be sufficient
  • Now every save in the editor resets the entire editor positioning. Make that smootherFixed! I've made it so we return to the original bounding box before the save. There is also a nice loading overlay on each save.
  • Move the activity higher up
  • Collapse completed items
  • Adjust the best practices for high and low priorities, and only show high priority counts on the activity
  • The auto fixed inputs would appear on top of each other
  • Major bug: When you go about refactoring/linting a prior version with a different set of steps etc, it breaks because the backend looks at the latest version of the workflow
  • This is unrelated but it would be cool to improve that version dropdown to have the selected version be highlighted more

@ahmedhamidawan ahmedhamidawan force-pushed the persistent_best_practice_results branch 3 times, most recently from 11c763f to b00e8ee Compare January 28, 2026 01:08
@ahmedhamidawan ahmedhamidawan modified the milestones: 26.0, 26.1 Jan 29, 2026
@ahmedhamidawan ahmedhamidawan force-pushed the persistent_best_practice_results branch 3 times, most recently from 7c1b2af to d4ae0cd Compare February 3, 2026 23:59
@ahmedhamidawan ahmedhamidawan marked this pull request as ready for review February 4, 2026 20:30
@ahmedhamidawan ahmedhamidawan force-pushed the persistent_best_practice_results branch from c2266b1 to 016162e Compare February 11, 2026 23:10
@ahmedhamidawan
Copy link
Copy Markdown
Member

Failing tests should be unrelated

ahmedhamidawan and others added 24 commits February 16, 2026 12:34
Co-authored-by: Claude <noreply@anthropic.com>
Implemented a logic which - if no position argument is provided in a refactor action that involves adding/extracting an input for a workflow - makes sure the input position does not overlap any existing workflow step (including multiple inputs potentially added in a singular refactor action).
The transform/viewport was not being reset to what it was before we would do a refactor action that would add new steps. This also adds those transform retention methods from the Index.vue component to the existing `workflowBoundingBox` composable.
Co-authored-by: Claude <noreply@anthropic.com>
Adds an entire `lintingTypes.d.ts` file to store not just the schema defined refactor request types for each action, but also all types of "lint state" objects generated on the client for those requests.
This now allows users to refactor a workflow for a prior version as well, instead of just being able to refactor just the `StoredWorkflow.latest_workflow`.
TODO: This will all be typed once we migrate this component and its parent (Index.vue) to composition API and TS.
@ahmedhamidawan ahmedhamidawan force-pushed the persistent_best_practice_results branch from 016162e to 004bb7a Compare February 16, 2026 19:17
Copy link
Copy Markdown
Contributor

@davelopez davelopez left a comment

Choose a reason for hiding this comment

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

Super cool! Thank you all!

@mvdbeek mvdbeek merged commit 36cc9da into galaxyproject:dev Feb 17, 2026
58 of 62 checks passed
@github-project-automation github-project-automation Bot moved this from Needs Review to Done in Galaxy Dev - weeklies Feb 17, 2026
@mvdbeek
Copy link
Copy Markdown
Member Author

mvdbeek commented Feb 17, 2026

Thank you @ahmedhamidawan!

@mvdbeek mvdbeek deleted the persistent_best_practice_results branch February 17, 2026 14:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Development

Successfully merging this pull request may close these issues.

4 participants