fix(DesignerV2): Fixed nested workflow clickthrough button#9018
fix(DesignerV2): Fixed nested workflow clickthrough button#9018
Conversation
🤖 AI PR Validation ReportPR Review ResultsThank you for your submission! Here's detailed feedback on your PR title and body compliance:
|
| Section | Status | Recommendation |
|---|---|---|
| Title | Use imperative tense; broaden to reflect context menu + hook/snapshots changes | |
| Commit Type | ✅ | No change needed |
| Risk Level | Recommend raising to Medium or justify why Low is still accurate | |
| What & Why | ✅ | Consider mentioning the new shared React Query cache and HostService usage |
| Impact of Change | Fill Developer/System impact items (new hooks/API calls/cache) | |
| Test Plan | ✅ | Unit tests present; consider E2E/integration for host openMonitorView path |
| Contributors | ✅ | No change needed |
| Screenshots/Videos | ✅ | No change needed |
Final Message
This PR mostly follows the template and includes unit tests and screenshots, so it passes the PR title/body checklist. My advised risk level is Medium, higher than the author’s Low selection, because the change touches multiple UI surfaces, adds a shared data-fetch hook and cache key, and introduces additional calls to RunService + HostService integration points. Please either update the PR risk selection/label to risk:medium or add a short justification in the PR body explaining why this is still Low risk.
Recommended next steps (clear, actionable):
- Update the PR title to imperative tense and optionally expand scope to reflect context menu and raw inputs/outputs hook (example:
fix(DesignerV2): add nested workflow clickthrough (panel + context menu) and UI fixes). - Update the Risk Level checkbox and repository label to
Medium— or add a justification in the PR body if you want to keepLow. - Expand "Impact of Change" to include:
- Developers: mention new files (childWorkflowHelpers.ts, useRawInputsOutputs.ts) and the new shared React Query cache key
['actionInputsOutputs', { nodeId, actionTrackingId, startTime, endTime }]. - System: note the additional RunService.getActionLinks calls and potential monitoring API load; mention caching/placeholderData behavior.
- Developers: mention new files (childWorkflowHelpers.ts, useRawInputsOutputs.ts) and the new shared React Query cache key
- If possible, add (or explain omission of) an integration/E2E test for the HostService.openMonitorView flow or document why it's covered manually.
Once you make the above small updates (title and risk/impact details), re-run CI and we can proceed to final review. Thanks for the thorough PR — the added tests and localization strings are great to see!
Last updated: Tue, 07 Apr 2026 16:00:00 GMT
❌ PR Validation ErrorAn error occurred while validating your PR. Please try again later or contact the maintainers. Error: API request failed with status 503 |
📊 Coverage CheckThe following changed files need attention: ❌
Please add tests for the uncovered files before merging. |
…gicAppsUX into riley/child-run-std-fix
There was a problem hiding this comment.
Pull request overview
This PR fixes the nested workflow “Show Logic App run details” clickthrough in DesignerV2 by ensuring the panel header has access to the raw run inputs/outputs (before schema binding can drop important fields), and updates related header button styling.
Changes:
- Update monitoring inputs/outputs React Query caching to refresh based on stable run identifiers.
- Add shared helpers + unit tests to reliably extract child workflow ID and child run ID across raw/bound formats.
- Update panel header buttons (icons + layout) and wire the clickthrough to use raw (pre-binding) inputs/outputs.
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| libs/designer-v2/src/lib/ui/panel/nodeDetailsPanel/tabs/monitoringTab/monitoringTab.tsx | Adjusts the React Query key and switches to placeholderData to better track run changes without manual refetch. |
| libs/designer-v2/src/lib/ui/panel/nodeDetailsPanel/nodeDetailsPanel.tsx | Reads raw inputs/outputs via React Query cache and uses them to enable/open nested workflow run details. |
| libs/designer-v2/src/lib/ui/panel/nodeDetailsPanel/childWorkflowHelpers.ts | Adds reusable parsing helpers for child workflow run/workflow IDs across formats. |
| libs/designer-v2/src/lib/ui/panel/nodeDetailsPanel/test/childWorkflowHelpers.spec.ts | Adds unit coverage for helper parsing behavior and edge cases. |
| libs/designer-ui/src/lib/panel/panelheader/panelheader.tsx | Updates header button icons to Fluent v9 icon components and tweaks button rendering. |
| libs/designer-ui/src/lib/panel/panel.less | Updates header button container styling (spacing/layout). |
Comments suppressed due to low confidence (3)
libs/designer-v2/src/lib/ui/panel/nodeDetailsPanel/tabs/monitoringTab/monitoringTab.tsx:49
placeholderDatamakes TanStack Query return data immediately while the request is still fetching (withisLoadingfalse). This effect will dispatchinitializeInputsOutputsBindingwith the placeholder{ inputs: {}, outputs: {} }and then dispatch again when real data arrives, which can transiently clear/overwrite bound inputs/outputs and cause flicker. Consider gating the dispatch on!isFetchingor!isPlaceholderData(or switch back toinitialDataif you intentionally want the initial dispatch).
<InputsPanel
runMetaData={runMetaData}
brandColor={brandColor}
isLoading={isFetching || isLoading}
isError={isError}
nodeId={selectedNodeId}
/>
<OutputsPanel
runMetaData={runMetaData}
brandColor={brandColor}
libs/designer-v2/src/lib/ui/panel/nodeDetailsPanel/nodeDetailsPanel.tsx:218
- This
useQueryruns for every node selection, even when the node isn't a Workflow-type action (the only case where the "Show Logic App run details" header button can appear). SincegetActionLinkscan trigger extra network requests, consider adding anenabledcondition (e.g., only whennodeTypeis Workflow and the panel is in run mode) to avoid unnecessary fetches and reduce overhead.
const showLogicAppRunClick = useCallback(() => {
const workflowId = getChildWorkflowIdFromInputs(rawInputsOutputs?.inputs);
if (workflowId && runName && !!HostService()) {
HostService().openMonitorView?.(workflowId, runName);
}
}, [rawInputsOutputs?.inputs, runName]);
// Re-render panel when undo/redo is performed to update panel parameter values, title etc.
const undoRedoClickToggle = useUndoRedoClickToggle();
return (
<PanelContainer
libs/designer-v2/src/lib/ui/panel/nodeDetailsPanel/nodeDetailsPanel.tsx:290
handleTrackEventis an intentionally empty function, but the previous eslint disable comment for@typescript-eslint/no-empty-functionwas removed. If that rule is enabled in this package (it appears to be used elsewhere), this will fail lint/CI. Either restore the disable for this line, implement tracking, or remove the prop wiring if a no-op is acceptable.
4bac878 to
c63c9f9
Compare
c63c9f9 to
e45b1a5
Compare
Commit Type
Risk Level
What & Why
Fixed visibility for the nested workflow clickthrough button
Fixed some small styling issues related to the action buttons
Added workflow clickthrough to the node context menu
Fixes #6974
Impact of Change
Test Plan
Contributors
@rllyy97
Screenshots/Videos