Show disabled Implement button when Developer flow is off

What does this MR do and why?

Shows the Implement button as disabled, with a popover, when the Developer flow isn't available. Before this change, the button disappeared. The flow can be turned off either by disabling the specific (or all) foundational flows on group level, or by disabling foundation flows on project level. The UI text does not differentiate. It simply says that it's turned off for this project.

Where the disabled state applies:

This also covers Allow flow execution being off at the top-level group or project. The existing remoteFlowsEnabled response includes inherited restrictions, so no backend changes are needed.

  • Workplan row: disabled with popover
  • Workplan panel: disabled with popover
  • Next to Create merge request (when the workplan feature flag is off): still hidden, unchanged. Without the workplan for context, a disabled Duo button would be confusing. See this discussion.
Implementation details
  • duo_workflow_action.vue gets optional disabledFlowMessage and disabledFlowHelpPath props. When the flow is unavailable, it renders the new FlowUnavailableButton, which follows the same pattern as RepositoryRequiredButton.
  • FlowUnavailableButton shows the message and a Learn more link to Implement a workplan with GitLab Duo in a popover.
  • The disabled button appears only when:
    • Duo flows are otherwise available for the user and project.
    • Flow execution is explicitly disabled, or the configured flows query has returned and found no matching flow.
  • If execution is enabled, a loading or failed configured-flows query keeps the button hidden. If execution is explicitly disabled, the existing popover can explain the unavailable action without waiting for the configured-flows query.
  • The button uses accessible-disabled, so it stays focusable and the popover also opens on keyboard focus.
  • startWorkflow also returns early when the action is not enabled.
  • The workplan row and panel supply the message and documentation link from their own constants. duo_work_item_to_mr_action.vue forwards these through its existing $attrs binding and contains no workplan-specific presentation logic.
  • Named boolean computeds select the enabled button, unavailable-flow button, repository-required button, or dropdown item. Render modes use constants; the template contains no string comparisons.
  • Other DuoWorkflowAction users don't pass the new prop, so they behave the same as before.

References

Screenshots or screen recordings

Placement Before After
Workplan row before_inline_row Screenshot_2026-10-07_at_09.21.36
Workplan panel before_panel Screenshot_2026-10-07_at_09.21.28
workplan flag off (next to Create merge request) before_workplan_off No change, Implement stays hidden

How to set up and validate locally

  1. Use a project in a group with Duo Agent Platform and remote flows turned on.

  2. Turn off the Developer foundational flow, either for the top-level group or for the project.

  3. Open a work item that has a saved workplan.

  4. Check that the Implement button in the workplan row is disabled.

  5. Hover over or tab to Implement. Check that the popover says implementation isn't turned on for this project and has a Learn more link to the docs.

  6. Select View and check the same disabled state in the workplan panel.

  7. Enable the Developer flow, then turn off Allow flow execution at the project level. Reload and verify the same disabled state in the row and panel.

  8. Restore the project setting, then turn off Allow flow execution at the top-level group. Reload and verify the same disabled state. Restore the group setting afterwards.

  9. Optional. In the Rails console, turn off the workplan widget:

    Feature.disable(:workplan)
  10. Reload the work item. Check that Implement is not shown next to Create merge request.

  11. Turn the flag back on:

    Feature.enable(:workplan)
  12. Turn on the Developer flow. Check that Implement is enabled and shows its usual tooltip.

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Vanessa Otto

Merge request reports

Loading
Loading