Skip to content

[Release] v1.2.5 - #630

Merged
Power-Maverick merged 326 commits into
mainfrom
dev
Aug 23, 2026
Merged

[Release] v1.2.5#630
Power-Maverick merged 326 commits into
mainfrom
dev

Conversation

@Power-Maverick

@Power-Maverick Power-Maverick commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Summary

This pull request introduces several improvements and new features to the desktop app, including enhanced headless tool logging, private marketplace configuration documentation, and dependency updates. It also refines the release workflow for Windows installers.

Type of change

  • New feature
  • Bug fix
  • Refactor (no functional change)
  • Documentation
  • Chore / maintenance (dependency update, build, config)
  • Test addition / improvement

Changes

New Features & Documentation

  • Added a comprehensive PRIVATE_MARKETPLACE_CONFIGURATION.md guide explaining how to configure and host a private marketplace, including Azure Blob Storage integration and packaging instructions.
  • Enhanced headless tool logging: headless invocations now capture tool messages via context.logger, which are stored with the job and surfaced in the MCP Server UI. The documentation describes how to use this logger and how logs are displayed live in the server page. [1] [2]

Build & Release Workflow Improvements

  • Refactored the Windows packaging step in .github/workflows/nightly-release.yml and .github/workflows/prod-release.yml to ensure the "Package installers from signed directory" step runs after generating app-update.yml and before signing with Azure Trusted Signing. This fixes the step ordering for Windows builds. [1] [2] [3] [4]

Dependency Updates

  • Added @sentry/electron as a new dependency for error tracking. [1] [2]
  • Updated and reordered playwright in package.json for consistency. [1] [2]
  • Bumped app version to 1.2.5 in package.json.
  • Updated pnpm-lock.yaml with new dependencies, including OpenTelemetry packages and APM JS Collab utilities. [1] [2]

Architecture checklist

Packages (types & validation)

  • Not applicable — no changes to packages/

If you did change a package:

  • @pptb/types (types): type definitions updated and version bumped in packages/types/package.json
  • @pptb/validate (validation): validation rules updated and version bumped in packages/validation/package.json

Code quality

  • pnpm run typecheck passes with 0 errors (warnings are acceptable)
  • pnpm run lint passes with 0 errors (warnings are acceptable)
  • pnpm run build completes successfully

Testing

  • pnpm run test:unit passes (for changes to src/main/, src/common/, or src/renderer/ utilities)
  • pnpm run test:e2e passes (for UI / navigation / end-to-end flows)
  • Manually tested in the running app (pnpm run dev)

Scenario tested:

Screenshots / recordings

Breaking changes

  • No breaking changes
  • Yes — describe impact and migration path below:

Reviewer notes

  • I have added appropriate unit and/or e2e tests for this change
  • I have resolved all GitHub Copilot review comments
  • I have followed the guidelines in CONTRIBUTING.md

Power-Maverick and others added 30 commits March 20, 2026 14:46
…rove category and environment colour UX (#476)

* Initial plan

* fix(ui): fix dual-connection tab colours, swap test/uat env defaults, add category colour reuse in modals

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/36215f3c-c4f5-4b8d-b69c-38a10596f30b

* fix(ui): replace category datalist with styled select dropdown; show -- when no category selected

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/e63c4fea-b3f3-4128-a5e4-31201aeca998

* feat(ui): env color defaults, category reset visibility, sidebar category color swatch

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/04495a30-b495-4fa9-8788-86465ede19cb

* feat(ui): hide category color section when no category (default) is selected

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/afe2255f-00cc-455e-99a4-9ff8d1b4a95e

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
* Initial plan

* Replace blocking About dialog with custom modal BrowserWindow

The About dialog previously used dialog.showMessageBoxSync which is
not modal relative to the main app window and can be hidden behind it.

Now it sends a SHOW_ABOUT IPC event to the renderer which shows a
custom BrowserWindow-based modal (same pattern as the update dialog)
with version info, environment details, and a copy-to-clipboard button.

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/51cb116a-9705-4972-8e3b-242f5767550e

* Show success notification after copying About info to clipboard

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/5b424552-b2fb-4bce-adb3-1893b210285a

* Guard showAboutDialog against destroyed/loading webContents; remove unused GET_ABOUT_INFO IPC

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/a4e390e5-c47b-4e65-b9a4-6e47ed1385d3

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
…ers (#481)

* Initial plan

* Add appearance settings for category/environment color show/hide and border thickness

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/193f644f-df36-4d4c-8ed0-96b7a0f482c9

* Move hardcoded appearance defaults into named constants

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/f393659c-9ed8-4b82-a91b-e94a799801a8

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
* Initial plan

* Add 'Restore Session on Startup' setting to skip reopening tools on app start

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/8ec8d9a2-6b1a-4686-879a-b04708e4cbe8

* Fix build error, add tool name to connection modals, fix missing braces from merge

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/3d6bb8bf-f335-43ee-9634-7e61be7db8fc

* fix: silently re-authenticate connections on session restore, show modal on failure

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/24765ec3-ad59-4605-a741-566555503b34

* feat: add unsaved changes detection and close guard for settings tab
feat: made settings button sticky

* fix pr review comment - #482 (comment)

* fix: apply unresolved reviewer feedback - shared escapeHtml, await closeOtherTabs

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/fb9f6281-aee9-4813-b322-1751c3a0844b

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Co-authored-by: Power-Maverick <danish.naglekar@hotmail.com>
…View and align UI with modal windows (#491)

* Initial plan

* Fix global search overlay appearing behind tool BrowserView

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/98496443-e99d-461f-9385-da0c10cd5dc5

* UI: Add modal-style header with close button to global search

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/263a78e7-da1f-4f02-9ab5-5b5d92d93119

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
…force-close with auto-update (#501)

* Initial plan

* fix: guard webContents.isDestroyed() to prevent crash on force-close during auto-update

Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/58b630b9-e75d-4941-9bae-5a32113756eb

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
…se-backed links (#499)

* feat: rename Important Links to Community Resources, make links dynamic via Supabase community_links table

Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/3e132f84-fa7c-40ca-801c-b1d29fae727b

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

* fix: address code review - remove unnecessary type assertion and simplify Supabase row cast

Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/3e132f84-fa7c-40ca-801c-b1d29fae727b

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

* fix: remove group_sort_order column - group ordering handled by the app

Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/e2dc53c8-11c9-4527-8170-7a70b191705b

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

* Update src/main/managers/toolRegistryManager.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/main/managers/toolRegistryManager.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat: add import connection source modal (XTB vs PPTB) with XTB export hint

Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/007d517e-6939-4a4e-9019-cb7badde489d

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

* feat: add custom modal popup for import connection source with copy path functionality

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Co-authored-by: Power-Maverick <danish.naglekar@hotmail.com>
Copy the global-search overlay pattern (semi-transparent backdrop +
backdrop-filter blur) to all BrowserWindow-backed modals.

- modalWindowManager: modal windows now fill the full main-window bounds
  so the overlay covers the entire app; injects --modal-panel-width and
  --modal-panel-height CSS vars so each panel keeps its intended size
- sharedStyles: add .modal-overlay rule (fixed inset-0, rgba(0,0,0,0.5)
  background, backdrop-filter blur(4px), flex-centered); update
  .modal-panel to CSS-var sizing with border-radius and max constraints
- All 10 modal view.ts files: wrap panel div in <div class="modal-overlay">
- Custom-panel modals (about, troubleshooting, updateNotification,
  toolDetail): inject .modal-overlay CSS inline and update panel class
  to CSS-var dimensions

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Revert the full-size window and CSS-var sizing  modals remainchanges
content-sized and centered as before.

Only copy the visual background styling from the global-search overlay:
- modalWindowManager: body gets background: rgba(0,0,0,0.5) and
  backdrop-filter: blur(4px) so the modal window shows the dark
  blurred backdrop behind the panel (through Electron transparent window)
- Remove .modal-overlay wrapper divs and CSS var sizing from all modals
- Restore .modal-panel to width/height: 100% in sharedStyles

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The backdrop-filter on a child BrowserWindow cannot blur the parent
window's content (different OS-level windows). Instead, inject the
overlay directly into the main  the same approach therenderer
global-search overlay uses.

- index.html: add #modal-backdrop div (hidden by default)
- styles.scss: .modal-backdrop mirrors the global-search overlay styles
  (position fixed, inset 0, rgba(0,0,0,0.5), backdrop-filter blur(4px))
- browserWindowModals.ts: listen to MODAL_WINDOW_OPENED/CLOSED events
  and toggle the backdrop div visibility
- modalWindowManager.ts: revert body background to transparent (backdrop
  is now handled in the main renderer, not the modal window itself)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Show backdrop synchronously in showBrowserWindowModal() before
  awaiting the modal window, eliminating the timing gap where the
  modal appears before the dark overlay
- Use display: flex for .modal-backdrop (matching .global-search-overlay)
  and update all JS toggle calls to use flex instead of block

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Initial plan

* Fix tool detail page icon to be theme-aware (dark/light mode)

Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/1d192ffc-640c-4a9e-9d8f-96251f98fd16

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

* Address review feedback: consolidate CSS and add theme-change handler for detail tab fallback icon

Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/d7760afb-4ed5-4874-97a5-1bc4275d4dbc

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
…filters are active (#509)

* Initial plan

* feat: add visual indicator dot on filter button when filters are active

Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/66184e84-c43b-4345-8093-4b9e767369f7

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

* feat: add one-click clear button for active dropdown filters on filter icon

Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/2f611815-65e8-44d8-b84c-47eb20959bb2

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

* style: reuse search-filter-btn styles for filter-clear-btn, remove duplicate CSS

Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/23c5d071-ba7f-43a5-9964-6170812cf4c0

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

* Update src/renderer/index.html

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/renderer/index.html

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/renderer/index.html

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
… notification banner (#511)

* Initial plan

* Pre-filter marketplace to new tools only when clicking homepage banner

Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/fd0d5ced-b91b-4e39-8812-cc2c8c36b293

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Co-authored-by: Power-Maverick <danish.naglekar@hotmail.com>
Bumps the npm_and_yarn group with 1 update in the / directory: [handlebars](https://github.com/handlebars-lang/handlebars.js).


Updates `handlebars` from 4.7.8 to 4.7.9
- [Release notes](https://github.com/handlebars-lang/handlebars.js/releases)
- [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/v4.7.9/release-notes.md)
- [Commits](handlebars-lang/handlebars.js@v4.7.8...v4.7.9)

---
updated-dependencies:
- dependency-name: handlebars
  dependency-version: 4.7.9
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…#513)

Bumps the npm_and_yarn group with 1 update in the / directory: [lodash](https://github.com/lodash/lodash).


Updates `lodash` from 4.17.21 to 4.18.1
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](lodash/lodash@4.17.21...4.18.1)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.18.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the npm_and_yarn group with 1 update in the / directory: [@xmldom/xmldom](https://github.com/xmldom/xmldom).


Updates `@xmldom/xmldom` from 0.8.11 to 0.8.12
- [Release notes](https://github.com/xmldom/xmldom/releases)
- [Changelog](https://github.com/xmldom/xmldom/blob/master/CHANGELOG.md)
- [Commits](xmldom/xmldom@0.8.11...0.8.12)

---
updated-dependencies:
- dependency-name: "@xmldom/xmldom"
  dependency-version: 0.8.12
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Fix: Tool detail page icon not adapting to dark/light theme (#510)

* Initial plan

* Fix tool detail page icon to be theme-aware (dark/light mode)

Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/1d192ffc-640c-4a9e-9d8f-96251f98fd16

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

* Address review feedback: consolidate CSS and add theme-change handler for detail tab fallback icon

Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/d7760afb-4ed5-4874-97a5-1bc4275d4dbc

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

* fix: improve empty state handling in sidebar tools by updating hint display (#516)

* feat: Add visual indicator and one-click clear to filter button when filters are active (#509)

* Initial plan

* feat: add visual indicator dot on filter button when filters are active

Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/66184e84-c43b-4345-8093-4b9e767369f7

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

* feat: add one-click clear button for active dropdown filters on filter icon

Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/2f611815-65e8-44d8-b84c-47eb20959bb2

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

* style: reuse search-filter-btn styles for filter-clear-btn, remove duplicate CSS

Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/23c5d071-ba7f-43a5-9964-6170812cf4c0

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

* Update src/renderer/index.html

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/renderer/index.html

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/renderer/index.html

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Pre-filter marketplace to "new tools only" when clicking the homepage notification banner (#511)

* Initial plan

* Pre-filter marketplace to new tools only when clicking homepage banner

Agent-Logs-Url: https://github.com/PowerPlatformToolBox/desktop-app/sessions/fd0d5ced-b91b-4e39-8812-cc2c8c36b293

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Co-authored-by: Power-Maverick <danish.naglekar@hotmail.com>

* chore(deps): bump handlebars (#512)

Bumps the npm_and_yarn group with 1 update in the / directory: [handlebars](https://github.com/handlebars-lang/handlebars.js).


Updates `handlebars` from 4.7.8 to 4.7.9
- [Release notes](https://github.com/handlebars-lang/handlebars.js/releases)
- [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/v4.7.9/release-notes.md)
- [Commits](handlebars-lang/handlebars.js@v4.7.8...v4.7.9)

---
updated-dependencies:
- dependency-name: handlebars
  dependency-version: 4.7.9
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump lodash in the npm_and_yarn group across 1 directory (#513)

Bumps the npm_and_yarn group with 1 update in the / directory: [lodash](https://github.com/lodash/lodash).


Updates `lodash` from 4.17.21 to 4.18.1
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](lodash/lodash@4.17.21...4.18.1)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.18.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump @xmldom/xmldom (#514)

Bumps the npm_and_yarn group with 1 update in the / directory: [@xmldom/xmldom](https://github.com/xmldom/xmldom).


Updates `@xmldom/xmldom` from 0.8.11 to 0.8.12
- [Release notes](https://github.com/xmldom/xmldom/releases)
- [Changelog](https://github.com/xmldom/xmldom/blob/master/CHANGELOG.md)
- [Commits](xmldom/xmldom@0.8.11...0.8.12)

---
updated-dependencies:
- dependency-name: "@xmldom/xmldom"
  dependency-version: 0.8.12
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
)

* Initial plan

* Fix logError to preserve error stack when an Error object is passed

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

* Fix logError to preserve error stack when an Error object is passed

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Co-authored-by: Power-Maverick <danish.naglekar@hotmail.com>
Copilot AI review requested due to automatic review settings August 16, 2026 15:32

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 70 out of 76 changed files in this pull request and generated no new comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Generated file
Suppressed comments (7)

src/renderer/modals/cspException/controller.ts:33

  • Avoid using console.warn in shipped modal controller script. This repo’s logging standard is to avoid console.* in production code; here it will run in the modal BrowserWindow and could leak noisy output.
    vite.config.ts:34
  • Vite config currently logs environment-status messages via console.log/warn. This adds noise to builds/CI and conflicts with the repo guideline to avoid console.* in production code (even though this is build-time code). Consider removing these logs and relying on runtime validation / explicit errors where needed.
    src/main/managers/headlessToolInvocationManager.ts:199
  • Failure path calls notifyJobChanged() immediately after appendLog(). appendLog() already notifies, so this doubles job-change notifications unnecessarily.
            this.jobs.set(jobId, failed);
            this.appendLog(jobId, "error", failed.error);
            this.notifyJobChanged(jobId);
        }

src/common/logger.ts:7

  • This change routes all app logging through sentryHelper, but sentryHelper currently writes to console.* (e.g. src/common/sentryHelper.ts:343, 412-462). The repo’s logging standard explicitly forbids console.* in production code, so this effectively reintroduces console logging across the app.
 * All application logging flows through this module. Log calls are forwarded to
 * sentryHelper which routes them through Sentry structured logging (when a DSN is
 * configured) and always mirrors output to the console.
 *

src/main/managers/headlessToolInvocationManager.ts:182

  • runJob() calls notifyJobChanged() immediately after appendLog(). Since appendLog() already calls notifyJobChanged(), this results in duplicate job-change notifications (extra IPC/UI refresh).

This issue also appears on line 196 of the same file.

            this.jobs.set(jobId, completed);
            this.appendLog(jobId, "info", "completed");
            this.notifyJobChanged(jobId);

src/renderer/modals/sentryConsent/view.ts:91

  • The Privacy Policy link uses target="_blank" without rel="noopener noreferrer". Adding rel avoids potential window.opener issues when opening external pages.
    src/main/index.ts:495
  • Duplicate ipcMain.removeHandler calls for GET_JOB_STATUS and CLEAR_LOGS are present twice, which is redundant and makes handler cleanup harder to maintain.
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.GET_JOB_STATUS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.CLEAR_LOGS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.GET_JOB_STATUS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.CLEAR_LOGS);

* Initial plan

* fix: open consent review in full view

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

* refactor: enhance consent review UI and improve summary statistics display

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Co-authored-by: Power-Maverick <danish.naglekar@hotmail.com>
Copilot AI review requested due to automatic review settings August 16, 2026 15:48

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 69 out of 75 changed files in this pull request and generated no new comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Generated file
Suppressed comments (10)

src/main/managers/headlessToolInvocationManager.ts:198

  • runJob() calls notifyJobChanged() immediately after appendLog(), but appendLog() already notifies. This results in duplicate update events for the same transition (failed).
            this.appendLog(jobId, "error", failed.error);
            this.notifyJobChanged(jobId);

src/renderer/modals/cspException/controller.ts:33

  • Avoid console.* in production code paths (project logging guidelines). This modal controller script should fail silently when modalBridge is unavailable rather than emitting console warnings.
    src/common/sentryHelper.ts:414
  • Project guidelines prohibit console.* in production code. logInfo() currently mirrors to console unconditionally; gate this to development-only (or remove) to avoid production console output.
    // eslint-disable-next-line no-console
    console.info("[INFO]", message, data || "");

src/common/sentryHelper.ts:430

  • Project guidelines prohibit console.* in production code. logWarn() currently mirrors to console unconditionally; gate this to development-only (or remove) to avoid production console output.
    // eslint-disable-next-line no-console
    console.warn("[WARN]", message, data || "");

src/common/sentryHelper.ts:446

  • Project guidelines prohibit console.* in production code. logError() currently mirrors to console unconditionally; gate this to development-only (or remove) to avoid production console output.
    // eslint-disable-next-line no-console
    console.error("[ERROR]", message, data || "");

src/common/sentryHelper.ts:462

  • Project guidelines prohibit console.* in production code. logFatal() currently mirrors to console unconditionally; gate this to development-only (or remove) to avoid production console output.
    // eslint-disable-next-line no-console
    console.error("[FATAL]", message, data || "");

src/main/index.ts:495

  • Duplicate ipcMain.removeHandler calls for GET_JOB_STATUS and CLEAR_LOGS. This is redundant and makes it harder to reason about teardown coverage.
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.GET_JOB_STATUS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.CLEAR_LOGS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.GET_JOB_STATUS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.CLEAR_LOGS);

src/main/managers/settingsManager.ts:109

  • normalizeMarketplaceSources() defaults enabled based on source.type, but type is being normalized on the same object literal. If an entry omits type and enabled, this will default to false even for the built-in marketplace (until later logic patches it), and can also mis-default other entries. Default should be derived from the normalized type/id.
            enabled: typeof source.enabled === "boolean" ? source.enabled : source.type === "builtin" ? true : false,

src/main/managers/headlessToolInvocationManager.ts:182

  • runJob() calls notifyJobChanged() immediately after appendLog(), but appendLog() already notifies. This results in duplicate update events for the same transition (completed).

This issue also appears on line 197 of the same file.

            this.appendLog(jobId, "info", "completed");
            this.notifyJobChanged(jobId);

src/common/sentryHelper.ts:343

  • Project guidelines prohibit console.* in production code. logCheckpoint() currently writes to console unconditionally; this should be gated to development-only (or removed) so production runs don't emit console output.

This issue also appears in the following locations of the same file:

  • line 413
  • line 429
  • line 445
  • line 461
export function logCheckpoint(checkpoint: string, data?: Record<string, unknown>): void {
    // eslint-disable-next-line no-console
    console.log("[Checkpoint]", checkpoint, data ? JSON.stringify(data, null, 2) : "");

…orm API (#636)

* Initial plan

* Fix: Replace window.confirm() with inline overlay for PP API consent to prevent Electron modal focus loss

Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Power-Maverick <36135520+Power-Maverick@users.noreply.github.com>
Copilot AI review requested due to automatic review settings August 21, 2026 17:12

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 69 out of 75 changed files in this pull request and generated no new comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Generated file
Suppressed comments (5)

Previously missed (5) — in code that hasn't changed since the last review.

src/renderer/modals/cspException/controller.ts:33

  • This controller script uses console.warn(...). The repo’s logging approach appears to be moving to the centralized logger/Sentry helper, and this exact console warning is duplicated across multiple modal controllers. Consider removing the console call (or routing through the centralized logging path) to keep production output consistent.
    src/main/index.ts:495
  • Duplicate ipcMain.removeHandler calls for GET_JOB_STATUS and CLEAR_LOGS are redundant and make teardown harder to reason about. Remove the duplicate lines so each channel is only removed once.
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.GET_CLIENT_CONFIG_STATUSES);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.GET_JOB_STATUS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.CLEAR_LOGS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.GET_JOB_STATUS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.CLEAR_LOGS);

src/main/managers/settingsManager.ts:109

  • normalizeMarketplaceSources() computes a fallback type for sources, but the enabled default is based on source.type (the pre-normalized value). If type is omitted in stored settings, this can incorrectly default enabled to false (including for the built-in source when a private source exists). Default enabled based on the effective type.
            enabled: typeof source.enabled === "boolean" ? source.enabled : source.type === "builtin" ? true : false,

src/main/managers/settingsManager.ts:335

  • CSP consent records persisted from older versions will not have the new seenOptional field, but getCspConsents() returns the raw store value. Because CspConsentRecord.seenOptional is now required, this can break consumers that iterate all consents (e.g. consent review UI) on upgrade. Consider normalizing/migrating consents on read (fallback seenOptional to optional).
    grantCspConsent(toolId: string, requiredDomains: string[] = [], approvedOptionalDomains: string[] = [], seenOptionalDomains: string[] = []): void {
        const cspConsents = this.store.get("cspConsents") || {};
        cspConsents[toolId] = { allowed: true, required: requiredDomains, optional: approvedOptionalDomains, seenOptional: seenOptionalDomains };
        this.store.set("cspConsents", cspConsents);

src/main/managers/headlessToolInvocationManager.ts:182

  • runJob() calls appendLog(...), which already calls notifyJobChanged(). The extra notifyJobChanged() calls after appendLog() will double-fire job update events (and likely double IPC updates) for completed/failed jobs. Drop the redundant notifications so each state change only emits once.
            this.jobs.set(jobId, completed);
            this.appendLog(jobId, "info", "completed");
            this.notifyJobChanged(jobId);

@github-actions github-actions Bot added the package-changed The `types` or `validation` packages have been changed label Aug 21, 2026
Copilot AI review requested due to automatic review settings August 21, 2026 19:21

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 71 out of 77 changed files in this pull request and generated no new comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Generated file
Suppressed comments (4)

Previously missed (4) — in code that hasn't changed since the last review.

src/main/index.ts:496

  • Duplicate ipcMain.removeHandler calls for MCP_SERVER_CHANNELS.GET_JOB_STATUS and MCP_SERVER_CHANNELS.CLEAR_LOGS. This is redundant and makes it easier for the handler list to drift over time.
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.GET_CLIENT_CONFIG_STATUSES);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.GET_JOB_STATUS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.CLEAR_LOGS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.GET_JOB_STATUS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.CLEAR_LOGS);

src/renderer/modules/cspExceptionModal.ts:99

  • openCspConsentManagementModal is documented to return null when cancelled, but closing the modal currently rejects the promise. In the consent review flow this gets caught as an error and triggers a "Consent Update Failed" notification even though the user just dismissed the dialog.
    src/main/managers/headlessToolInvocationManager.ts:184
  • runJob() calls appendLog(), which already notifies listeners via notifyJobChanged(), but then also calls notifyJobChanged() again in both the completed and failed paths. This can cause redundant renderer refreshes/IPC updates for every job completion/failure.
            this.jobs.set(jobId, completed);
            this.appendLog(jobId, "info", "completed");
            this.notifyJobChanged(jobId);
        } catch (error) {
            const failed = this.jobs.get(jobId);

src/common/logger.ts:6

  • The header comment states logs are "always" mirrored to the console, and logger.ts forwards everything to sentryHelper where logInfo/logWarn/logError/logCheckpoint call console.* even in production. This conflicts with the repo guideline to avoid console.* in production code; consider mirroring only in development or routing entirely through Sentry.
 * All application logging flows through this module. Log calls are forwarded to
 * sentryHelper which routes them through Sentry structured logging (when a DSN is
 * configured) and always mirrors output to the console.

Copilot AI review requested due to automatic review settings August 22, 2026 14:58

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 82 out of 88 changed files in this pull request and generated no new comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Generated file
Suppressed comments (5)

Previously missed (5) — in code that hasn't changed since the last review.

src/renderer/modals/cspException/controller.ts:32

  • console.warn is used in the injected modal controller script. This repo’s guidelines prohibit console.* usage in production code; this same pattern exists in several modal controllers and should be replaced/removed consistently.
    src/main/index.ts:495
  • Duplicate ipcMain.removeHandler calls for MCP_SERVER_CHANNELS.GET_JOB_STATUS and MCP_SERVER_CHANNELS.CLEAR_LOGS are present back-to-back. This is redundant and makes the teardown list harder to maintain.
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.GET_JOB_STATUS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.CLEAR_LOGS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.GET_JOB_STATUS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.CLEAR_LOGS);

src/renderer/modals/mcpInvocationDetails/view.ts:74

  • Status mapping does not account for AgentInvocationLogEntry.outcome === "in-progress" (it currently falls back to "pending"). This causes active invocations to display the wrong status badge when no HeadlessJobDetails are available.
    src/main/managers/headlessToolInvocationManager.ts:182
  • runJob() triggers duplicate job-change notifications on completion/failure: appendLog() already calls notifyJobChanged(), but runJob() calls notifyJobChanged() again immediately afterward. This can cause double UI refresh/events per state change.
    src/renderer/modules/cspExceptionModal.ts:99
  • openCspConsentManagementModal() rejects the promise when the modal is closed via the window close button. Callers (e.g. consent review action handler) treat cancel as a non-error and will currently show an error notification/log for a user cancel. The JSDoc also says it returns null when cancelled.

Copilot AI review requested due to automatic review settings August 22, 2026 17:02

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 82 out of 88 changed files in this pull request and generated no new comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Generated file
Suppressed comments (6)

Previously missed (5) — in code that hasn't changed since the last review.

src/renderer/modals/cspException/controller.ts:32

  • This controller script uses console.warn in production code. Repo logging guidance says to avoid console.* and route logs through Sentry/central logging instead; the same console.warn pattern appears in multiple modal controllers.
    src/main/index.ts:495
  • Duplicate ipcMain.removeHandler calls for MCP job-status/log channels are present. This is redundant and makes the teardown list harder to audit.
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.GET_CLIENT_CONFIG_STATUSES);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.GET_JOB_STATUS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.CLEAR_LOGS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.GET_JOB_STATUS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.CLEAR_LOGS);

src/main/managers/settingsManager.ts:110

  • normalizeMarketplaceSources() infers a default source.type, but the default-enabled logic still checks source.type (the original value). If a stored source is missing type, this can incorrectly default enabled=false even when the inferred type is "builtin" (and can unexpectedly disable the built-in marketplace when a private source exists).
    src/renderer/modals/sentryConsent/view.ts:91
  • External link opens with target="_blank" but is missing rel="noopener noreferrer", which can allow reverse-tabnabbing. The same pattern also exists in other renderer HTML generation (e.g. src/renderer/modules/initialization.ts:698).
    src/main/managers/headlessToolInvocationManager.ts:182
  • runJob() calls appendLog(), which already notifies listeners via notifyJobChanged(). The extra notifyJobChanged(jobId) here causes duplicate job-updated events for the completion transition.

This issue also appears on line 196 of the same file.

src/main/managers/headlessToolInvocationManager.ts:198

  • runJob() calls appendLog(), which already notifies listeners via notifyJobChanged(). The extra notifyJobChanged(jobId) here causes duplicate job-updated events for the failure transition.

Copilot AI review requested due to automatic review settings August 23, 2026 03:05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 83 out of 89 changed files in this pull request and generated no new comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Generated file
Suppressed comments (3)

Previously missed (3) — in code that hasn't changed since the last review.

src/main/index.ts:495

  • ipcMain.removeHandler is called twice for MCP_SERVER_CHANNELS.GET_JOB_STATUS and MCP_SERVER_CHANNELS.CLEAR_LOGS, which is redundant and makes it easier to introduce mismatches when this list changes.
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.GET_CLIENT_CONFIG_STATUSES);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.GET_JOB_STATUS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.CLEAR_LOGS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.GET_JOB_STATUS);
        ipcMain.removeHandler(MCP_SERVER_CHANNELS.CLEAR_LOGS);

src/main/managers/headlessToolInvocationManager.ts:198

  • appendLog() already calls notifyJobChanged(), so the explicit notifyJobChanged(jobId) after appendLog() causes duplicate “job updated” notifications on both the completed and failed paths.
    src/renderer/modals/sentryConsent/view.ts:91
  • Links opened with target="_blank" should include rel="noopener noreferrer" to prevent reverse-tabnabbing and ensure the new page cannot access window.opener. The repo already uses this pattern elsewhere (e.g. src/renderer/modals/cspException/view.ts:512).

@Power-Maverick
Power-Maverick merged commit 4c83925 into main Aug 23, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

package-changed The `types` or `validation` packages have been changed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants