Skip to content

fix: address plugin bridge review comments from PR #9889#9938

Merged
jackkav merged 5 commits into
developfrom
chore/address-plugin-pr-review-comments
May 21, 2026
Merged

fix: address plugin bridge review comments from PR #9889#9938
jackkav merged 5 commits into
developfrom
chore/address-plugin-pr-review-comments

Conversation

@jackkav
Copy link
Copy Markdown
Contributor

@jackkav jackkav commented May 20, 2026

Summary

Addresses the review comments left on #9889 after merge.

  • IPC channel naming consistency — renamed plugin-ui-alert, plugin-ui-dialog, plugin-ui-prompt, plugin-ui-prompt-result to plugins.uiAlert, plugins.uiDialog, plugins.uiPrompt, plugins.uiPromptResult to match the plugins.xxx dot-notation pattern used by all other plugin bridge channels
  • Missing sender check — added event.sender !== mainWindow.webContents guard to the plugins.uiPromptResult IPC handler (the prompt result originates from the main renderer window, not the plugin window)
  • getBridgeMetrics consistency — switched from raw invokeWithNormalizedError('plugins.getBridgeMetrics') to invokePluginBridgeMethod('getBridgeMetrics') and added 'getBridgeMetrics' to PluginInvokeMethod
  • Bridge executePluginMainAction in root.tsx — replaced direct executePluginMainAction import from ~/plugins with window.main.plugins.executePluginMainAction (the bridge)
  • servicesProxy in plugin window — replaced servicesNodeImpl with servicesProxy in entry.plugin-window.ts so service calls route through IPC to the main process rather than importing the Node.js implementation bundle directly

Test plan

  • TypeScript: no errors (tsc --noEmit)
  • ESLint: no issues

🤖 Generated with Claude Code

- rename plugin-ui-* IPC channels to plugins.ui* for naming consistency
- add sender validation to plugins.uiPromptResult handler
- use invokePluginBridgeMethod for getBridgeMetrics (adds it to PluginInvokeMethod)
- use window.main.plugins.executePluginMainAction in root.tsx instead of direct import
- use servicesProxy instead of servicesNodeImpl in plugin window entry

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 20, 2026 12:11
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR follows up on PR #9889 by tightening the plugin-bridge IPC surface: it standardizes plugin UI IPC channel names, adds sender validation for prompt results, routes getBridgeMetrics through the same preload bridge helper, switches plugin-window service initialization to the IPC proxy, and updates an OAuth flow to call plugin main actions via the bridge.

Changes:

  • Renamed plugin UI IPC channels to plugins.ui* dot-notation and updated corresponding type unions and listeners.
  • Added event.sender === mainWindow.webContents validation for plugins.uiPromptResult.
  • Routed plugin-window service calls through servicesProxy and normalized getBridgeMetrics invocation via invokePluginBridgeMethod.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
packages/insomnia/src/ui/renderer-listeners.ts Updates renderer listeners to new plugins.ui* IPC channel names.
packages/insomnia/src/root.tsx Switches Azure OAuth exchange to use the plugin bridge call site.
packages/insomnia/src/plugins/invoke-method.ts Extends PluginInvokeMethod with getBridgeMetrics.
packages/insomnia/src/main/plugin-window.ts Renames plugin UI channels and adds sender validation for prompt results.
packages/insomnia/src/main/ipc/electron.ts Updates IPC channel type unions to match the new channel names.
packages/insomnia/src/entry.preload.ts Uses invokePluginBridgeMethod('getBridgeMetrics') and renames prompt-result send channel.
packages/insomnia/src/entry.plugin-window.ts Initializes services using servicesProxy instead of the node implementation bundle.
packages/insomnia/src/entry.plugin-window-preload.ts Renames plugin UI bridge channels used by the plugin window.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/insomnia/src/plugins/invoke-method.ts Outdated
Comment thread packages/insomnia/src/root.tsx Outdated
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 20, 2026

✅ Circular References Report

Generated at: 2026-05-21T07:46:53.416Z
Status: ✅ NO CHANGE

Summary

Metric Base (develop) PR Change
Total Circular References 19 19 0 (0.00%)
Click to view all circular references in PR (19)
insomnia-inso/src/db/models/types.ts -> insomnia-inso/src/db/types.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts -> insomnia/src/network/cancellation.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts -> insomnia/src/network/cancellation.ts -> insomnia/src/script-executor.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts -> insomnia/src/network/cancellation.ts -> insomnia/src/script-executor.ts -> insomnia/src/scripting/require-interceptor.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts -> insomnia/src/network/concurrency.ts
insomnia/src/network/network.ts -> insomnia/src/common/render.ts
insomnia/src/network/network.ts -> insomnia/src/common/render.ts -> insomnia/src/templating/index.ts -> insomnia/src/plugins/index.ts -> insomnia/src/plugins/context/app.ts -> insomnia/src/templating/types.ts -> insomnia/src/plugins/context/network.ts
insomnia/src/network/network.ts -> insomnia/src/main/network/get-auth-header.ts -> insomnia/src/main/network/o-auth-2/get-token.ts
insomnia/src/plugins/index.ts -> insomnia/src/plugins/context/app.ts -> insomnia/src/templating/types.ts -> insomnia/src/plugins/context/store.ts
insomnia/src/plugins/index.ts -> insomnia/src/plugins/misc.ts
insomnia/src/templating/base-extension-worker.ts -> insomnia/src/templating/worker.ts
insomnia/src/templating/index.ts -> insomnia/src/templating/base-extension.ts
insomnia/src/templating/types.ts -> insomnia/src/plugins/context/network.ts
insomnia/src/templating/types.ts -> insomnia/src/templating/utils.ts
insomnia/src/ui/components/settings/import-export.tsx -> insomnia/src/ui/components/modals/export-requests-modal.tsx
insomnia/src/ui/components/tabs/tab-list.tsx -> insomnia/src/ui/components/tabs/tab.tsx
insomnia/src/ui/components/templating/tag-editor-arg-sub-form.tsx -> insomnia/src/ui/components/templating/external-vault/external-vault-form.tsx
insomnia/src/ui/components/viewers/response-viewer.tsx -> insomnia/src/ui/components/viewers/response-multipart-viewer.tsx
Click to view all circular references in base branch (19)
insomnia-inso/src/db/models/types.ts -> insomnia-inso/src/db/types.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts -> insomnia/src/network/cancellation.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts -> insomnia/src/network/cancellation.ts -> insomnia/src/script-executor.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts -> insomnia/src/network/cancellation.ts -> insomnia/src/script-executor.ts -> insomnia/src/scripting/require-interceptor.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts -> insomnia/src/network/concurrency.ts
insomnia/src/network/network.ts -> insomnia/src/common/render.ts
insomnia/src/network/network.ts -> insomnia/src/common/render.ts -> insomnia/src/templating/index.ts -> insomnia/src/plugins/index.ts -> insomnia/src/plugins/context/app.ts -> insomnia/src/templating/types.ts -> insomnia/src/plugins/context/network.ts
insomnia/src/network/network.ts -> insomnia/src/main/network/get-auth-header.ts -> insomnia/src/main/network/o-auth-2/get-token.ts
insomnia/src/plugins/index.ts -> insomnia/src/plugins/context/app.ts -> insomnia/src/templating/types.ts -> insomnia/src/plugins/context/store.ts
insomnia/src/plugins/index.ts -> insomnia/src/plugins/misc.ts
insomnia/src/templating/base-extension-worker.ts -> insomnia/src/templating/worker.ts
insomnia/src/templating/index.ts -> insomnia/src/templating/base-extension.ts
insomnia/src/templating/types.ts -> insomnia/src/plugins/context/network.ts
insomnia/src/templating/types.ts -> insomnia/src/templating/utils.ts
insomnia/src/ui/components/settings/import-export.tsx -> insomnia/src/ui/components/modals/export-requests-modal.tsx
insomnia/src/ui/components/tabs/tab-list.tsx -> insomnia/src/ui/components/tabs/tab.tsx
insomnia/src/ui/components/templating/tag-editor-arg-sub-form.tsx -> insomnia/src/ui/components/templating/external-vault/external-vault-form.tsx
insomnia/src/ui/components/viewers/response-viewer.tsx -> insomnia/src/ui/components/viewers/response-multipart-viewer.tsx

Analysis

No Change: This PR does not introduce or remove any circular references.


This report was generated automatically by comparing against the develop branch.

- Remove getBridgeMetrics from PluginInvokeMethod since it is handled
  by the main process directly and has no case in invokePluginMethod()
- Route getBridgeMetrics in preload via ipcRenderer.invoke directly
- Use plugins.executePluginMainAction in root.tsx to respect the
  INSOMNIA_ENABLE_PLUGIN_BRIDGE rollback switch

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Comment thread packages/insomnia/src/main/ipc/electron.ts Outdated
jackkav and others added 3 commits May 21, 2026 09:28
Rename plugin-invoke → plugins.invoke to match the plugins.* dot-notation
used by all other plugin IPC channels introduced in PR #9889.

Also add the missing plugin handle channels to the HandleChannels type
union in electron.ts (getBridgeMetrics, hasRequestHooks, hasResponseHooks,
applyRequestHooks, applyResponseHooks).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@jackkav jackkav merged commit 60e529a into develop May 21, 2026
20 of 21 checks passed
@jackkav jackkav deleted the chore/address-plugin-pr-review-comments branch May 21, 2026 07:56
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.

3 participants