Skip to content
Merged
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
299 commits
Select commit Hold shift + click to select a range
66969dd
feat(packages): add pptb-validate CLI for pre-publish tool validation…
Copilot Mar 5, 2026
aebd2a8
feat: Allow toolmakers to explain why they need CSP exceptions with s…
Copilot Mar 5, 2026
947756a
fix: add alwaysOnTop option for auto update notification… (#437)
Power-Maverick Mar 5, 2026
5d7393b
feat: Add category filter and grouping to connection selection modals…
Copilot Mar 6, 2026
b4d7dc2
Remove Sentry monitoring and replace with centralized console logging…
Copilot Mar 7, 2026
9594165
feat: add preflight job for version validation and release notes chec…
Power-Maverick Mar 8, 2026
d3c3934
fix: update version to 1.2.0 in package.json
Power-Maverick Mar 9, 2026
9587368
handle entity collection bound action/function correctly (#445)
drivardxrm Mar 9, 2026
d1b2150
correctly handle dates in function parameters (formatFunctionParamete…
drivardxrm Mar 9, 2026
5f1b298
fix: update preflight job condition to correctly handle pull request …
Power-Maverick Mar 9, 2026
192ac6b
feat: enhance preflight checks with detailed failure comments for rel…
Power-Maverick Mar 9, 2026
b0c8d63
feat: enhance preflight checks with detailed error reporting for vers…
Power-Maverick Mar 9, 2026
b9e3041
chore: update release notes for version 1.2.0 with new highlights, fi…
Power-Maverick Mar 9, 2026
5942058
fix: update version to 1.2.1 in package.json and 1.2.1-beta.0 in pack…
Power-Maverick Mar 9, 2026
e0d8ae2
fix: adjust loading overlay window settings to avoid conflicts with s…
Power-Maverick Mar 9, 2026
6903d66
Merge branch 'main' into dev
Power-Maverick Mar 9, 2026
8dd9b1b
fix: enable protocol handling in development mode with environment va…
Power-Maverick Mar 13, 2026
9c0a58a
Add search clear buttons to sidebar search inputs #442 (#451)
cyco77 Mar 16, 2026
4a78830
Implement "What's New" feature with auto-update notification (#453)
Power-Maverick Mar 16, 2026
a382592
Feature/tab context menu (#456)
cyco77 Mar 16, 2026
38bc686
Merge branch 'main' into dev
Power-Maverick Mar 18, 2026
0b2fece
feat: Allow sharing of connection files (import/export) (#444)
Copilot Mar 18, 2026
c9b2b9a
Fix: Wrong BrowserView dimensions and connection prompt after force-r…
Copilot Mar 18, 2026
7a9cbc2
Settings opens as a tab with VSCode-style UI; adds Settings to View m…
Copilot Mar 19, 2026
a640979
feat: Import connections from XrmToolBox XML files (#463)
Copilot Mar 19, 2026
931dfe0
feat: Support US Government cloud (GCC High / DoD) Dataverse URLs (#469)
Copilot Mar 20, 2026
1e928c4
Add a Links Hub and Multi-agent Orchestration (#470)
Power-Maverick Mar 20, 2026
4907213
fix: deprecate showLoading and hideLoading methods in toolboxAPI (#475)
Power-Maverick Mar 20, 2026
6d9c18b
minor change to clarify usage of metadata api functions (#474)
OliverFlint Mar 20, 2026
dfdb468
Fix dual-connection tab colour split, swap Test/UAT env defaults, imp…
Copilot Mar 21, 2026
87524a8
Replace blocking About dialog with custom modal BrowserWindow (#477)
Copilot Mar 22, 2026
742e077
Add appearance settings for category color and environment color bord…
Copilot Mar 22, 2026
80b8103
fix: enhance dual connection handling in tool management (#483)
Power-Maverick Mar 22, 2026
b9baa9c
Add option to disable session restore on startup (#482)
Copilot Mar 22, 2026
72cad4b
fix: improve connection import handling and clean up logger imports (…
Power-Maverick Mar 25, 2026
1721ec0
Fix: Global search command palette renders behind active tool Browser…
Copilot Mar 28, 2026
d6f1e40
Fix: TypeError "Object has been destroyed" in emitModalClosed during …
Copilot Mar 28, 2026
87353dd
Rename "Important Links" to "Community Resources" with dynamic Supaba…
Copilot Mar 28, 2026
18dc4e5
feat: source selection modal for connection import (XTB vs PPTB) (#500)
Copilot Mar 29, 2026
1db8a9d
fix: update DevTools opening mode to detach for main and tool windows
Power-Maverick Mar 29, 2026
034b11e
feat: add backdrop overlay to all modal windows
Power-Maverick Mar 29, 2026
3c3ac97
fix: apply only background/blur styling to modal windows
Power-Maverick Mar 29, 2026
6f5676c
fix: render modal backdrop overlay in main renderer window
Power-Maverick Mar 29, 2026
4418353
fix: show modal backdrop immediately with correct display value
Power-Maverick Mar 29, 2026
b3f0543
chore: update release notes for version 1.2.1 with highlights, fixes,…
Power-Maverick Apr 2, 2026
6a66bf5
fix: improve formatting and organization of changelog entries for cla…
Power-Maverick Apr 2, 2026
23a7823
Fix: Tool detail page icon not adapting to dark/light theme (#510)
Copilot Apr 3, 2026
8f3492f
fix: improve empty state handling in sidebar tools by updating hint d…
Power-Maverick Apr 3, 2026
b34b1b7
feat: Add visual indicator and one-click clear to filter button when …
Copilot Apr 3, 2026
4f988bc
Pre-filter marketplace to "new tools only" when clicking the homepage…
Copilot Apr 3, 2026
6be4f45
chore(deps): bump handlebars (#512)
dependabot[bot] Apr 3, 2026
0f70f3f
chore(deps): bump lodash in the npm_and_yarn group across 1 directory…
dependabot[bot] Apr 3, 2026
e86e784
chore(deps): bump @xmldom/xmldom (#514)
dependabot[bot] Apr 3, 2026
ddd327f
introduce merge pr workflow
darkwheel Apr 3, 2026
ba46898
Release/1.2.2 into Dev (#519)
Power-Maverick Apr 6, 2026
50cf03a
fix: update version to 1.2.2 in package.json
Power-Maverick Apr 6, 2026
b07f064
fix: update version from 1.2.1-beta.0 to 1.2.1 in package.json
Power-Maverick Apr 6, 2026
2b8376d
fix: update version to 1.2.2-beta.0 in package.json
Power-Maverick Apr 6, 2026
ab91c7d
Update src/renderer/modules/browserWindowModals.ts
Power-Maverick Apr 8, 2026
d186e63
Update src/renderer/modals/updateNotification/view.ts
Power-Maverick Apr 8, 2026
fa363ee
Update src/renderer/modals/troubleshooting/view.ts
Power-Maverick Apr 8, 2026
9ed15a6
Update src/renderer/modals/toolDetail/view.ts
Power-Maverick Apr 8, 2026
fea065d
Update src/renderer/modals/about/view.ts
Power-Maverick Apr 8, 2026
8924ed6
Merge pull request #502 from PowerPlatformToolBox/add-overlay-to-modals
Power-Maverick Apr 8, 2026
f21e2cc
Initial plan
Copilot Apr 8, 2026
939ffc4
Fix Windows assembly signing: sign app binaries before packaging into…
Copilot Apr 8, 2026
b0f07e7
Initial plan
Copilot Apr 8, 2026
bd19a65
feat: add system tray icon so app is accessible when window is closed…
Copilot Apr 8, 2026
283270c
chore: clean up code structure and remove unused code blocks
Power-Maverick Apr 8, 2026
866627f
Delete .DS_Store
Power-Maverick Apr 8, 2026
c5824df
fix: update icon paths from assets/ to icons/
Copilot Apr 8, 2026
851d972
feat: support separate icons for stable and insider release channels
Copilot Apr 8, 2026
da43e3b
ci: update release workflows for stable/insider channel separation
Copilot Apr 8, 2026
73a3ff5
Refactor code structure for improved readability and maintainability
Power-Maverick Apr 9, 2026
48ed9b7
Apply suggestions from code review
Power-Maverick Apr 9, 2026
c172ff8
fix: track isQuitting flag so tray Quit fully exits app on macOS
Copilot Apr 9, 2026
56fa306
feat: restrict pptb:// protocol registration to stable channel only
Copilot Apr 10, 2026
05ee3d1
fix: cross-platform package scripts and single-instance lock for insi…
Copilot Apr 10, 2026
2592579
Merge pull request #521 from PowerPlatformToolBox/copilot/fix-macos-q…
Power-Maverick Apr 11, 2026
8f02025
Fix unpacked dir path and --dir flag for Windows signing steps
Copilot Apr 11, 2026
c054063
feat(pptb-validate): add pptb.config.json invocation validation with …
Copilot Apr 11, 2026
39bdd5e
feat(inter-tool-launch): implement all 7 parts of Inter-Tool Launch C…
Copilot Apr 11, 2026
9a5d455
fix: address code review comments (explicit null check, blank line, .…
Copilot Apr 11, 2026
9399036
docs: add plan-inter-tool-launch-context.md with accurate v3 reflecti…
Copilot Apr 13, 2026
cfd03dc
fix: rename PptbConfig→PPTBConfig and validatePptbConfig→validatePPTB…
Copilot Apr 13, 2026
5cc1e8f
[Feature]: Send version, platflorm etc automagically to feedback
LinkeD365 Apr 27, 2026
01af851
fix: improve feedback URL fallback and separate instanceId/toolId fields
Copilot Apr 27, 2026
b597e4b
[Bug]: Color/Size of update available not clear
LinkeD365 Apr 27, 2026
30dbc67
fix: apply PR review feedback - update badge icon and checkbox accent…
Copilot Apr 27, 2026
4b43126
fix: update tool update badge styling and replace image with text ind…
LinkeD365 Apr 27, 2026
5d987b6
fix: address review feedback - remove unused var, add ARIA attrs, fix…
Copilot Apr 27, 2026
4668cac
Potential fix for code scanning alert no. 21: Workflow does not conta…
darkwheel May 14, 2026
905b538
Update .github/workflows/merge-prs.yml
darkwheel May 14, 2026
91e8125
Update .github/workflows/merge-prs.yml
darkwheel May 14, 2026
0d58658
update based on copilot review
darkwheel May 14, 2026
0c70b4c
formatting
darkwheel May 14, 2026
8f86cf1
Potential fix for pull request finding
darkwheel May 14, 2026
b1b4b71
Potential fix for pull request finding
darkwheel May 14, 2026
2955ac5
Potential fix for pull request finding
darkwheel May 14, 2026
b8d02ef
Apply suggestions from code review
darkwheel May 14, 2026
ba3b102
update to fix copilot suggestions
darkwheel May 14, 2026
2cd958d
Merge pull request #535 from darkwheel/pr-518
darkwheel May 14, 2026
af9ee24
Merge pull request #523 from PowerPlatformToolBox/copilot/create-impl…
Power-Maverick May 14, 2026
db6b0fe
Add concurrency to merge PRs workflow
darkwheel May 14, 2026
eb613c0
Potential fix for pull request finding
darkwheel May 14, 2026
e5e0c5a
Apply suggestions from code review
darkwheel May 14, 2026
f22bcdd
Update merge-prs.yml
darkwheel May 14, 2026
2bf0ddb
Update workflow to combine PRs with new permissions
darkwheel May 14, 2026
057697f
Potential fix for pull request finding
darkwheel May 15, 2026
e61f967
[Feature]: Send version, platflorm etc automagically to feedback for …
LinkeD365 May 19, 2026
3202ed6
Configure concurrency for PR merge workflow
darkwheel May 19, 2026
852495b
Merge pull request #518 from PowerPlatformToolBox/merge-dependabot-prs
Power-Maverick May 19, 2026
ae9fd44
Merge pull request #520 from PowerPlatformToolBox/copilot/fix-windows…
Power-Maverick May 19, 2026
a521b43
added support for url's ending in `mcas.ms`
OliverFlint May 20, 2026
c055d83
fixed notification z-index issue
OliverFlint May 20, 2026
32a8c73
Initial plan
Copilot May 20, 2026
bc0c763
fix: address PR 531 review feedback in feedback URL diagnostics
Copilot May 20, 2026
130eae2
Merge pull request #539 from PowerPlatformToolBox/copilot/fix-comment…
LinkeD365 May 20, 2026
47d8290
[Bug]: Color/Size of update available not clear
LinkeD365 May 20, 2026
0e13514
chore: refactored file and code
Power-Maverick May 20, 2026
c3f79c7
Merge pull request #531 from PowerPlatformToolBox/LinkeD365/issue528
Power-Maverick May 21, 2026
f2fc410
Merge branch 'dev' into LinkeD365/issue524
Power-Maverick May 21, 2026
343176a
Merge pull request #537 from OliverFlint/mcas.ms-url-support
Power-Maverick May 21, 2026
d3f6a85
Merge pull request #538 from OliverFlint/notification-z-index
Power-Maverick May 21, 2026
2ba02ec
Merge branch 'dev' into release/1.2.2
Power-Maverick May 21, 2026
9b723c2
Initial plan
Copilot May 21, 2026
c673005
fix inter-tool launch and invocation error handling
Copilot May 21, 2026
33f5f0b
refine non-blocking inter-tool launch flow
Copilot May 21, 2026
0b166e6
harden invocation failure cleanup logging
Copilot May 21, 2026
60f8409
clarify fire-and-forget invocation launch handling
Copilot May 21, 2026
453a12e
Merge pull request #541 from PowerPlatformToolBox/copilot/fix-code-co…
Power-Maverick May 21, 2026
46cd349
Merge pull request #540 from PowerPlatformToolBox/release/1.2.2
Power-Maverick May 21, 2026
7c4a51e
bump version to 1.2.2-beta.1 in package.json
Power-Maverick May 21, 2026
330b045
remove deprecated loading screen API and associated handlers
Power-Maverick May 21, 2026
2a7b431
fix: address review feedback - remove stale comment, unused LoadingOv…
Copilot May 21, 2026
98a1de7
Initial plan
Copilot May 21, 2026
faba7d3
Initial plan
Copilot May 21, 2026
8a69b7c
Merge pull request #542 from PowerPlatformToolBox/bug/remove-loading-…
Power-Maverick May 21, 2026
b1c785d
feat: sync zoom level between main window and all open tool BrowserViews
Copilot May 21, 2026
0c4359e
feat: allow tools to open mailto: links with user consent
Copilot May 21, 2026
47affc5
refactor: address code review - extract helper, add URL validation, f…
Copilot May 21, 2026
d4a05fb
fix: correct zoom-in accelerator and re-fit BrowserView bounds after …
Copilot May 21, 2026
7ba3b77
chore: merge dev into branch to resolve divergence
Copilot May 21, 2026
a131b31
feat: update zoom in accelerator keys and improve window menu structure
Power-Maverick May 21, 2026
834c220
Merge pull request #543 from PowerPlatformToolBox/copilot/feature-all…
Power-Maverick May 21, 2026
9c10f97
chore: merge dev into branch and address review feedback
Copilot May 21, 2026
f1156b4
fix: improve parse-failure log message with scheme context (no PII)
Copilot May 21, 2026
ec2278d
Merge branch 'dev' into LinkeD365/issue524
Power-Maverick May 21, 2026
36c8481
fix: avoid full-url lowercase in mailto scheme checks
Copilot May 22, 2026
a26e9e1
feat: enable mock updates in development environment
Power-Maverick May 22, 2026
3655c91
Merge pull request #532 from PowerPlatformToolBox/LinkeD365/issue524
Power-Maverick May 22, 2026
f5bd91b
Merge pull request #544 from PowerPlatformToolBox/copilot/add-csp-rul…
Power-Maverick May 22, 2026
c7736b1
feat: enhance protocol handler to support single-instance lock for st…
Power-Maverick May 22, 2026
25c23d6
docs: add Inter-Tool Invocation documentation
Copilot May 22, 2026
5d4c788
docs: fix markdown escaping in parameter table
Copilot May 22, 2026
9d19c11
Merge pull request #545 from PowerPlatformToolBox/copilot/add-inter-t…
Power-Maverick May 22, 2026
651b920
feat: Open URLs in external browser using connection's browser profil…
Copilot May 24, 2026
abd8419
chore: update package version to 1.2.2 and release notes for consistency
Power-Maverick May 24, 2026
4b096a0
feat: enhance DataverseConnection interface with optional fields for …
LinkeD365 Jun 12, 2026
4373bad
feat: Inter-Tool Launch Context v2 — capabilities, auto-close, FXS in…
Copilot Jun 12, 2026
9daee72
docs: reorganize Table of Contents in INTER_TOOL_INVOCATION.md for im…
Power-Maverick Jun 12, 2026
ba86e35
fix: open callee tool in its own tab during inter-tool invocation
Copilot Jun 12, 2026
f44e15e
refactor: use Tool type instead of any casts in callee tab listener
Copilot Jun 12, 2026
b6c34b1
fix: move invocation banner into content-wrapper and update text labels
Copilot Jun 12, 2026
a23faa9
fix: offset BrowserView bounds by banner height to prevent tool conte…
Copilot Jun 12, 2026
d489850
Merge pull request #557 from PowerPlatformToolBox/copilot/open-fetchx…
Power-Maverick Jun 12, 2026
5534196
Initial plan
Copilot Jun 12, 2026
c41eefd
feat: harden tool terminal execution
Copilot Jun 12, 2026
eb1a0f1
feat: tighten terminal command allowlist
Copilot Jun 12, 2026
d1a996e
refactor: finalize terminal safeguards
Copilot Jun 12, 2026
87d85ca
fix: finalize secure terminal restrictions
Copilot Jun 12, 2026
81493bf
refactor: switch terminal security from allowlist to blocklist
Copilot Jun 14, 2026
8810e6e
feat: add startShellProcess with shell selection and sentinel-based c…
Copilot Jun 14, 2026
5230bea
fix: address code review — cmd flags, pwsh exit code capture, sentine…
Copilot Jun 14, 2026
36ad2a4
fix: log warning when sentinel exit code is malformed
Copilot Jun 14, 2026
94d6bbf
fix: pass raw command string to shell stdin so && and other operators…
Copilot Jun 14, 2026
c36eefc
fix(terminal): filter sentinel echo lines from stdout display
Copilot Jun 14, 2026
11fbfc3
refactor(terminal): extract flushStdoutBuffer helper to remove duplic…
Copilot Jun 14, 2026
9a42ad1
refactor(terminal): reorganize imports and improve logging for stdout…
Power-Maverick Jun 15, 2026
0680696
Merge pull request #558 from PowerPlatformToolBox/copilot/secure-term…
Power-Maverick Jun 15, 2026
8f45d70
fix(styles): adjust button alignment and layout in settings and tool …
Power-Maverick Jun 15, 2026
4c74c01
Merge pull request #563 from PowerPlatformToolBox/bug/487-incorrect-b…
Power-Maverick Jun 15, 2026
09674f1
Initial plan
Copilot Jun 15, 2026
29a2a04
feat: support beta/pre-release npm packages (#382)
Copilot Jun 15, 2026
d892992
Merge pull request #564 from PowerPlatformToolBox/copilot/support-bet…
Power-Maverick Jun 15, 2026
fbc15e5
fix(version): update version to 1.2.3 in package.json
Power-Maverick Jun 15, 2026
59cc9fb
fix(version): update version to 1.2.3-beta.0 in package.json
Power-Maverick Jun 17, 2026
d3ca6be
Enhance terminal blocking
Power-Maverick Jun 17, 2026
b21cb59
Added capabilities to npm and locally loaded tools
Power-Maverick Jun 17, 2026
a472af4
fix: version scope is sanitized from npm install
Power-Maverick Jun 18, 2026
8849386
moved out of beta into stable
Power-Maverick Jun 18, 2026
c93a16a
1.2.3 Release Notes
MattBerg11 Jun 18, 2026
149336a
Update RELEASE_NOTES.md
Power-Maverick Jun 18, 2026
cc1ed1e
Merge pull request #565 from MattBerg11/dev
Power-Maverick Jun 18, 2026
a23600c
fixed the icon path and check status badge in readme
Power-Maverick Jun 18, 2026
3a35c87
fixed the issue with npm install
Power-Maverick Jun 19, 2026
7d15b9a
fixed the uninstall issue for npm and local loaded tools
Power-Maverick Jun 19, 2026
3c1c898
Merge pull request #566 from PowerPlatformToolBox/fix/npm-install-issue
Power-Maverick Jun 19, 2026
0adb154
Merge branch 'main' into dev
Power-Maverick Jun 19, 2026
e757b56
Revert "Merge branch 'main' into dev"
Power-Maverick Jun 20, 2026
2846e23
Added common validate package for both types and web; incremented the…
Power-Maverick Jun 22, 2026
708bce9
issue fixed for double encryption (#574)
Power-Maverick Jun 23, 2026
77c2f01
Enable Power Platform API access (#575)
Power-Maverick Jun 23, 2026
ca44b5f
Added PP API scopes to Connection (#580)
Power-Maverick Jun 24, 2026
4736543
MCP-enabled agent assisted process (#581)
Power-Maverick Jun 24, 2026
73bdd38
Add MCP Headless for fully unattended flow (#582)
Power-Maverick Jun 24, 2026
7ad9101
Enhanced Terminal Hardening Rules plus added Test Suites (#583)
Power-Maverick Jun 24, 2026
145b82e
feat: Add notification history panel with bell icon in footer (#585)
Copilot Jun 25, 2026
3822c59
Removed the incorrect filter and updated the wording on connection se…
Power-Maverick Jun 25, 2026
8574760
[Feature] side by side toolview (#588)
Power-Maverick Jun 26, 2026
9dcdc25
added ElicitRequest to MCP
Power-Maverick Jun 26, 2026
41bdcab
[Feature] Add preview feature flagging, gate MCP Server behind it, mo…
Copilot Jun 27, 2026
4778311
Added MCP to preview feature and added preview feature enablement in …
Power-Maverick Jun 27, 2026
df9e294
Implement headless mode support for tools, adding globals for toolbox…
Power-Maverick Jun 30, 2026
f7e37e8
fix: remove unused getPowerPlatformManager variable in headlessToolRu…
Copilot Jun 30, 2026
dc25102
Merge pull request #592 from PowerPlatformToolBox/copilot/fix-build-e…
Power-Maverick Jun 30, 2026
5eec89f
feat: implement preview feature management and settings integration
Power-Maverick Jul 19, 2026
1683c26
refactor: remove Power Platform API preview feature references from c…
Power-Maverick Jul 19, 2026
6f9ff50
feat: add consent confirmation for Power Platform API access in conne…
Power-Maverick Jul 20, 2026
321fd4d
Resolving bug [Bug]: Uninstall local debugged tool deletes local folder
Power-Maverick Jul 20, 2026
caf96f5
Initial plan
Copilot Jul 20, 2026
d42ffc0
fix: color success and error modal feedback correctly
Copilot Jul 20, 2026
73c273c
fix: show modal success messages in green
Copilot Jul 20, 2026
b0b5ada
Merge pull request #593 from PowerPlatformToolBox/copilot/fix-success…
Power-Maverick Jul 20, 2026
42cc3fb
fix: hide/show Power Platform API based on auth type in connection mo…
Power-Maverick Jul 21, 2026
1337603
#591, #561 fix: update Dataverse hostname pattern to include new regi…
cyco77 Jul 21, 2026
565a1a3
Merge pull request #596 from cyco77/feature/api-crm-cn
Power-Maverick Jul 22, 2026
7bf4521
feat: implement app registration configuration and update connection …
Power-Maverick Jul 22, 2026
9a937b2
feat: add start and stop functionality for MCP server and based on th…
Power-Maverick Jul 22, 2026
090e5c9
Merge pull request #599 from PowerPlatformToolBox/fix/bg-processes
Power-Maverick Jul 22, 2026
850d845
fix: update PR checklist & bundle-size to handle forked PRs errors
Power-Maverick Jul 22, 2026
e2e6fa1
fix: resolving issue with second instance invocation creating two ins…
Power-Maverick Jul 23, 2026
ca6cbb5
feat: add 'Copy Script & Add/Save' functionality and update connectio…
Power-Maverick Jul 23, 2026
e260f17
chore: update MCP Server label and description for clarity on agentic…
Power-Maverick Jul 23, 2026
c913364
Merge pull request #600 from PowerPlatformToolBox/feat/pp-api-client-…
Power-Maverick Jul 23, 2026
63ac32d
feat: add MCP headless to related UI elements
Power-Maverick Jul 23, 2026
6698e7c
fix: add validation for app-update.yml existence and enhance auto-upd…
Power-Maverick Jul 23, 2026
7a25f57
Merge pull request #602 from PowerPlatformToolBox/fix/update-error
Power-Maverick Jul 23, 2026
29ed88b
Merge branch 'main' into dev
Power-Maverick Jul 23, 2026
22a9434
fix: update PR title validation to include 'Release' type
Power-Maverick Jul 23, 2026
616be5a
fix: correct PR title validation message to include proper formatting…
Power-Maverick Jul 23, 2026
6a43188
release v1.2.4 prep
Power-Maverick Jul 23, 2026
a03e2f4
Initial plan
Copilot Jul 23, 2026
35a2642
fix: make notification panel and toast respect the selected app theme
Copilot Jul 23, 2026
7431431
Merge pull request #604 from PowerPlatformToolBox/copilot/fix-notific…
Power-Maverick Jul 23, 2026
48dba71
fix: enhance preflight check comments and handling for PRs
Power-Maverick Jul 23, 2026
0f1516d
some improvements to the workflows and updating the release notes
Power-Maverick Jul 23, 2026
9c4a88a
fix: update .gitignore to include test-results directory and remove o…
Power-Maverick Jul 24, 2026
d6e4bd0
Apply suggestions from code review
Power-Maverick Jul 24, 2026
c08e6dc
fix: reorder comments for clarity in connection button handling
Power-Maverick Jul 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
140 changes: 140 additions & 0 deletions .github/plans/plan-mcp-agentic-invocation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
## Plan: MCP Agentic Tool Invocation in PPTB

Enable reliable MCP-driven invocation for PPTB tools with explicit one-way and two-way contracts, while reusing existing invocation plumbing. The recommended approach is to keep current windowed execution for v1, add explicit invocation mode semantics at the MCP boundary, tighten schema and security validation, and publish a clear tool-author contract plus migration guide.

**Steps**

1. Phase 1: Lock scope and invocation model

- Define supported MCP invocation modes and map to PPTB behavior.
Mode A: One-way (fire-and-forget) returns immediate accepted response and does not wait for tool return payload.
Mode B: Two-way (request-response) waits for tool return payload via existing invocation return path.
- Set defaults and compatibility.
Default to two-way for existing tools.
If mode is omitted but tool declares no return schema, treat as one-way.
- Declare v1 constraints.
Keep execution windowed only for now.
No streaming partial results in v1.
No parallel nested invocations from a single MCP request in v1.

2. Phase 2: Extend contracts and shared types

- Extend invocation contract in type definitions used by tools and host.
Add optional mode capabilities in InvocationConfig so each tool can declare allowed agent invocation modes and expected timeout behavior.
- Extend MCP request contract in server code.
Add invocation metadata fields in MCP tool input envelope (for example mode and optional timeout), while preserving backward compatibility with existing prefill schema.
- Extend schema conversion and registry output.
Expose mode support and return expectations in MCP tool descriptions and input schema hints so agents can choose one-way vs two-way correctly.

3. Phase 3: Main-process orchestration changes

- Add MCP invocation mode routing in McpServerManager.
One-way path: validate input, launch tool, return accepted result quickly, log correlation id.
Two-way path: validate input, launch tool, await returnData result, return structured payload.
- Reuse ToolWindowManager launch-with-context pipeline.
Pass a normalized invocation context including source mcp, mode, correlation id, caller metadata, and timeout envelope.
- Add timeout and cancellation guardrails.
Two-way: enforce per-request timeout and deterministic timeout response.
One-way: optional launch timeout only.
- Add stronger input and output validation.
Validate MCP input against converted prefill schema before launch.
For two-way mode, validate return payload against returnTopic before responding.

4. Phase 4: Security, auditability, and policy

- Harden tool eligibility checks.
Require invocation.agentInvokable true and explicit support for requested mode.
Reject mode mismatches with actionable errors.
- Expand audit logging.
Log mode, tool id, correlation id, duration, outcome, schema-validation result, and timeout/cancel reasons.
- Redaction policy.
Ensure sensitive connection-related fields are redacted from invocation logs and MCP error surfaces.

5. Phase 5: Tool runtime surface and compatibility helpers

- Keep existing tool runtime APIs as primary contract.
Tools continue to use getLaunchContext and returnData.
- Add optional invocation metadata to launch context.
Include source, mode, correlation id, requested timeout, and expectsResponse boolean so tools can branch behavior safely.
- Add optional helper semantics.
If mode is one-way, returnData is optional and ignored for MCP response lifecycle.
If mode is two-way, returnData remains required for successful completion.

6. Phase 6: Documentation and tool-author rollout

- Update inter-tool and MCP docs with normative behavior.
Document exact one-way and two-way semantics, error codes, timeout behavior, and compatibility rules.
- Publish tool-author migration guide.
Provide minimal manifest and runtime changes required per mode, plus test checklist.
- Add validation guidance.
Extend docs and validator messaging so tool authors get warnings for inconsistent invocation declarations.

7. Phase 7: Verification via MCP Inspector

- External harness.
Use MCP Inspector to exercise list-tools and call-tool flows instead of adding a repository test runner for this phase.
- Manual checks.
Verify one-way and two-way behavior, unsupported mode errors, and timeout handling with MCP Inspector.
- Regression checks.
Existing inter-tool invocation from toolboxAPI remains unchanged.
- Build gates.
Run typecheck, lint, and build before merge.

**Relevant files**

- /Users/danish/SourceCode/GitHub/PowerPlatformToolBox/desktop-app/src/main/mcp/mcpServer.ts — add MCP mode routing, timeout handling, validation orchestration, and response shaping.
- /Users/danish/SourceCode/GitHub/PowerPlatformToolBox/desktop-app/src/main/mcp/agentToolRegistry.ts — enrich exposed agent tool metadata with supported invocation modes and constraints.
- /Users/danish/SourceCode/GitHub/PowerPlatformToolBox/desktop-app/src/main/mcp/schemaConverter.ts — include mode-related schema hints and compatibility mapping.
- /Users/danish/SourceCode/GitHub/PowerPlatformToolBox/desktop-app/src/main/mcp/agentInvocationLogger.ts — add correlation-rich, redacted mode-aware logs.
- /Users/danish/SourceCode/GitHub/PowerPlatformToolBox/desktop-app/src/main/managers/toolWindowManager.ts — pass normalized invocation context and enforce launch/return lifecycle constraints.
- /Users/danish/SourceCode/GitHub/PowerPlatformToolBox/desktop-app/src/main/toolPreloadBridge.ts — ensure invocation context metadata reaches tools without breaking existing API.
- /Users/danish/SourceCode/GitHub/PowerPlatformToolBox/desktop-app/src/common/ipc/channels.ts — add any new channel constants only if needed for explicit mode/timeout signaling.
- /Users/danish/SourceCode/GitHub/PowerPlatformToolBox/desktop-app/packages/types/pptbConfig.d.ts — extend InvocationConfig with mode support declarations and optional timeout policy fields.
- /Users/danish/SourceCode/GitHub/PowerPlatformToolBox/desktop-app/packages/types/toolboxAPI.d.ts — document/extend invocation context typing for source and mode metadata.
- /Users/danish/SourceCode/GitHub/PowerPlatformToolBox/desktop-app/docs/INTER_TOOL_INVOCATION.md — add MCP normative section for one-way and two-way.
- /Users/danish/SourceCode/GitHub/PowerPlatformToolBox/desktop-app/docs/IMPLEMENTATION_CHECKLIST.md — add rollout and validation checklist for agentic invocation readiness.
- /Users/danish/SourceCode/GitHub/PowerPlatformToolBox/desktop-app/README.md — link to tool-author guidance and MCP enablement overview.

**Verification**

1. Type and lint gates
Run pnpm run typecheck and pnpm run lint.
1. Build gate
Run pnpm run build.
1. MCP discovery verification
Call MCP list-tools and verify only tools with agentInvokable true appear and mode metadata is present.
1. One-way invocation verification
Invoke a one-way-enabled tool through MCP, confirm immediate accepted response, confirm tool launch and completion in logs.
1. Two-way invocation verification
Invoke a two-way-enabled tool through MCP with valid input, confirm returned payload is schema-valid and surfaced to MCP caller.
1. Negative-path verification
Attempt mode not supported by tool, invalid prefill shape, and timeout scenario; confirm deterministic error codes and redacted logs.
1. Regression verification
Run an existing tool-to-tool invocation flow from UI to ensure legacy launchTool behavior remains intact.

**Decisions**

- Included scope: MCP-triggered one-way and two-way invocation semantics, schema validation hardening, logging, and tool-author contract updates.
- Excluded scope: headless execution mode, streaming partial responses, generalized workflow orchestration across multiple tools, and non-windowed runtime.
- Compatibility rule: existing tools continue to work without changes; new declaration fields are optional with safe defaults.

**Tool-side changes required**

1. Manifest updates
Each tool that should be MCP-callable keeps invocation.agentInvokable true and declares supported invocation mode(s) plus accurate prefill and returnTopic schemas.
1. Runtime handling for one-way tools
Tool reads launch context and performs action without assuming caller waits for return data. returnData may be omitted unless needed for local flow.
1. Runtime handling for two-way tools
Tool must call returnData with payload matching returnTopic schema before completing user flow.
1. Connection assumptions
Tools must not assume inherited secondary connection unless declared and selected; handle nulls explicitly.
1. Validation hygiene
Tool output should remain stable and schema-aligned; avoid returning ad-hoc fields not in returnTopic for two-way flows.
1. UX behavior
Because v1 is windowed, tools should render minimal actionable UI for agent-driven launches and auto-complete where safe.

**Further Considerations**

1. Decide whether one-way MCP responses should be pure accepted acknowledgements or include lightweight launch metadata such as correlation id and started timestamp. Recommendation: include correlation id for observability.
2. Decide timeout defaults globally vs per-tool override in manifest. Recommendation: global default with optional per-tool override.
3. Decide whether to treat missing returnTopic as implicit one-way eligibility. Recommendation: allow only when tool explicitly declares one-way support to avoid ambiguity.
80 changes: 80 additions & 0 deletions .github/plans/plan-mcp-headless-unattended-execution.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
## Plan: Fully Unattended MCP Tool Execution (Headless Entry)

This plan adds a pure Node.js headless execution path for MCP-driven tool calls, while reusing the existing MCP and invocation architecture and avoiding duplicate runtime pathways.

### Scope

- Add a CLI/headless entrypoint that runs without Electron UI.
- Add a headless execution mode to MCP call flow.
- Require explicit tool opt-in using `invocation.headless: true` in `pptb.config.json`.
- Reuse existing registry, schema conversion, connection/auth, and invocation logging where possible.
- Validate using MCP Inspector.

### Non-Goals

- No automatic conversion of UI tools to headless execution.
- No replacement of existing windowed invocation behavior.
- No streaming transport in v1 (polling only for long-running jobs).

### Phase 1: CLI Foundation

1. Create `src/cli/index.ts`, `src/cli/constants.ts`, `src/cli/utils.ts`.
1. Add `bin` entry in `package.json` for `pptb-cli`.
1. Add dedicated build target (`tsconfig.cli.json`) and compile `dist/cli/index.js`.
1. Keep implementation minimal and safe until headless manager is introduced.

### Phase 2: MCP Protocol Extension

1. Extend MCP request envelope with `executionMode: "headless"`.
1. Keep existing default behavior as `windowed` for backward compatibility.
1. Define response model for async job-based execution (`jobId`, `statusUrl`, `status`).

### Phase 3: Headless Invocation Runtime

1. Add `headlessToolInvocationManager` to run and track headless jobs.
1. Enforce opt-in: only tools with `invocation.headless: true` are callable in headless mode.
1. Add deterministic timeout handling and status transitions.

### Phase 4: Auth and Connection Strategy

1. Do not expose `connectionId` externally.
1. Accept caller-provided auth token in MCP request metadata/body or connection name that is created in PPTB.
1. If auth token is provided, inject token into a constrained headless tool API surface.
1. If connection name is provided, authenticate using existing connection and inject token into headless tool API surface.

### Phase 5: Progress and Status

1. Implement polling endpoint for long-running executions.
1. Return progress metadata and final result via status endpoint.
1. Keep transport stateless and MCP Inspector-friendly.

### Phase 6: Documentation

1. Update `docs/MCP_IMPLEMENTATION.md` with headless request/response contract.
1. Add dedicated net-new doc under `docs/` describing architecture changes.
1. Add author guidance for implementing `invokeHeadless(...)` in tools.

### Phase 7: Validation (Manual validation)

1. Start headless server via CLI.
1. Validate `list-tools` includes headless-eligible tools only.
1. Validate `call-tool` with `executionMode=headless`.
1. Validate status polling, timeout, and error paths.
1. Confirm existing windowed mode remains unchanged.

### Reuse Map (No Duplication)

- Reuse: `src/main/mcp/agentToolRegistry.ts` for tool discovery.
- Reuse: `src/main/mcp/schemaConverter.ts` for schema consistency.
- Reuse: `src/main/mcp/agentInvocationLogger.ts` for audit trail.
- Reuse: `src/main/mcp/mcpServer.ts` as primary request router (extended, not duplicated).
- Reuse: existing invocation metadata patterns and correlation IDs.

### Deliverables

- CLI/headless bootstrap scaffold.
- Headless execution manager.
- MCP protocol extension for headless mode.
- Polling endpoint for progress and results.
- Net-new implementation documentation.
- Manual verification checklist for MCP Inspector.
81 changes: 75 additions & 6 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,76 @@
Please fill in this template.
<!-- PR title format: [Type] Brief description — e.g. [Feature] Add connection export -->
<!-- Types: [Feature] | [Fix] | [Docs] | [Refactor] | [Chore] | [Test] -->
<!-- Target branch: dev (not main) -->

- [ ] Use a meaningful title for the pull request.
- [ ] Follow the guidelines from the [CONTRIBUTING.md](https://github.com/PowerPlatformToolBox/desktop-app/CONTRIBUTING.md#pull-requests).
- [ ] Mention the bug or the feature number the PR will be targeting.
- [ ] Test the change in your own code. (Compile and run)
- [ ] Resolve all GH Copilot comments.
## Summary

<!-- One or two sentences describing what this PR does and why. -->

Closes #<!-- issue number -->

## Type of change

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

## Changes

<!-- List the key files/areas changed and what was done. Be specific enough for a reviewer to navigate the diff. -->

-

## Architecture checklist

### Packages (`types` & `validation`)

<!-- Only fill in this section if you touched files under packages/. Otherwise delete it. -->

- [ ] **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

<!-- Describe how you verified this change works. -->

- [ ] `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:**

<!-- e.g. "Opened the app, navigated to X, confirmed Y behaviour" -->

## Screenshots / recordings

<!-- Attach screenshots or a short screen recording for any UI change. Delete this section if not applicable. -->

## Breaking changes

<!-- Does this change affect the tool API (`toolboxAPI` / `dataverseAPI`), existing IPC channels, or `pptoolbox-types`? -->

- [ ] No breaking changes
- [ ] Yes — describe impact and migration path below:

<!-- Breaking change details -->

## Reviewer notes

<!-- Anything specific you'd like reviewers to focus on, or context that helps them review faster. -->

- [ ] 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](https://github.com/PowerPlatformToolBox/desktop-app/blob/dev/CONTRIBUTING.md#pull-requests)
2 changes: 1 addition & 1 deletion .github/workflows/bundle-size.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ jobs:
fi

- name: Comment PR with bundle size
if: github.event_name == 'pull_request'
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository
uses: actions/github-script@v7
with:
script: |
Expand Down
20 changes: 20 additions & 0 deletions .github/workflows/nightly-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,26 @@ jobs:
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}

- name: Validate app-update.yml exists (Windows)
if: matrix.os == 'windows-latest'
shell: powershell
run: |
$unpackedDir = Join-Path "${{ github.workspace }}/build" "${{ matrix.win_unpacked_dir }}"
$resourcesDir = Join-Path $unpackedDir "resources"
$appUpdateYml = Join-Path $resourcesDir "app-update.yml"

if (-not (Test-Path $appUpdateYml)) {
Write-Host "❌ Missing updater config: $appUpdateYml"
Write-Host "Windows in-app auto-update requires NSIS metadata in resources/app-update.yml."
if (Test-Path $resourcesDir) {
Write-Host "Contents of resources directory:"
Get-ChildItem $resourcesDir | Select-Object Name, Length
}
exit 1
}

Write-Host "✅ Found updater config: $appUpdateYml"

- name: Sign application binaries with Azure Trusted Signing (Windows)
if: matrix.os == 'windows-latest'
uses: azure/artifact-signing-action@v1
Expand Down
Loading