Add modern card-based Tools Page webview for Power Platform ToolBox
Overview
This PR implements a dedicated webview page that displays all tools from the Power Platform ToolBox with a modern, card-based design inspired by XrmToolBox, making it easier to view tool details and launch them directly from a comprehensive interface.
Problem
Previously, users could only see the tools in a side panel tree view, which made it difficult to:
- View details about each tool at a glance
- Understand what tools are available in the toolbox
- Quickly access and launch tools
Solution
A new Tools Page webview with a modern card-based interface that provides:
🎨 Modern Card Interface
- Card-based layout inspired by XrmToolBox design
- Displays all 4 tools currently in the toolbox:
- Dataverse REST Builder (drb) by Guido Preite - Build and test Web API queries
- Plugin Registration (prt) by Microsoft - Manage plugins and workflows
- Configuration Migration (cmt) by Microsoft - Move configuration data
- Package Deployer (pd) by Microsoft - Deploy packages with automation
- Shows tool name, author, detailed description, and launch action in beautiful cards
- Visual icons for each tool (🔧 🔌 📦 🚀)
- Hover effects with smooth transitions and elevation
- Gradient backgrounds on tool icons
- Responsive grid layout that adapts to screen size
🔍 Enhanced Search
- Real-time search box that filters tools as you type
- Searches across all fields: name, author, and description
- Instant results with smooth animations
🚀 Quick Launch
- Click anywhere on a card to launch the tool
- Dedicated launch buttons with play icons (▶)
- Visual feedback on hover and click
- One-click access to any tool
🎯 Multiple Access Points
-
Command Palette: Type
Show Tools Page - Toolbox Panel: Click the table icon (📊) in the panel header
Implementation Details
New Files
-
resources/views/toolslist.html- Modern HTML template with card grid layout -
src/views/ToolsListView.ts- View class that renders tool cards with proper HTML escaping
Modified Files
-
resources/views/js/base.js- Updated search functionality to work with cards -
resources/views/css/base.css- Added 150+ lines of modern card styling with gradients, animations, and hover effects -
src/tools/tools.json- Added detailed descriptions and emoji icons for each tool -
src/utils/Interfaces.ts- Extended IToolDetails interface with optional description and emoji fields -
src/commands/registerToolsCommands.ts- Added showToolsPage and launchToolByShortName commands -
package.json- Added commands and menu items
Technical Highlights
- Modern card-based design inspired by XrmToolBox
- Responsive CSS Grid with auto-fill for flexible layouts
- Smooth animations including hover effects, transitions, and transforms
- Follows existing patterns: Consistent with refactored codebase structure
- VSCode theme integration: Uses CSS variables for seamless light/dark mode support
-
Security: HTML escaping using
lodash.escape()for defense-in-depth - Performance: Dynamic imports to optimize bundle size
-
Maintainability: Uses
array.map()for cleaner code structure - Integrated with main branch refactoring: Compatible with new ToolsHelper class and registerToolsCommands structure
- No breaking changes: All existing functionality remains intact
Merge Conflicts Resolved
Successfully resolved merge conflicts with the main branch:
- Updated property names to match main branch refactoring (name, shortName, author instead of toolName, toolShortName, toolAuthor)
- Kept description and emoji fields for the modern card design
- Moved tool commands to
registerToolsCommands.tsas per main branch structure - Updated
ToolsListView.tsto use new property names - Integrated with new
ToolsHelperclass instead of deleteddrbHelper
Testing
✅ Compilation successful in development and production modes
✅ Linting passed (warnings consistent with existing codebase)
✅ All files properly bundled in dist/ directory
✅ Merge conflicts resolved successfully
✅ Code review feedback addressed
✅ Modern design implemented with XrmToolBox inspiration
✅ No new errors introduced
Screenshots
The Tools Page features a modern, card-based interface:
Key Design Features:
- Card-based grid layout with responsive design
- Visual icons and gradient backgrounds
- Rich descriptions for each tool
- Hover effects with elevation and smooth transitions
- Launch buttons with visual feedback
- Tag badges showing tool short names
- Enhanced search across all tool information
Usage
After merging, users can access the Tools Page by:
- Opening Command Palette (
Ctrl+Shift+P/Cmd+Shift+P) and typing "Show Tools Page" - Clicking the table icon in the Power Platform ToolBox panel header
Fixes Power-Maverick/DataverseDevTools-VSCode#295
Original prompt
This section details on the original issue you should resolve
<issue_title>[Feature]: Add a tools page that will list all the tools from the toolbox</issue_title> <issue_description>### Is your feature request related to a problem?
No
Describe the problem?
Hard to see the details of the tools included in the toolbox from a side panel
Provide a solution or an idea you would like to see in the tool?
Create a webview that can be invoked from the toolbox section or command pallet. This webview will lost all the tools that are added to dvdt with an option to run them as well.
Relevant log output
```</issue_description> ## Comments on the Issue (you are @copilot in this section) <comments> </comments>
Fixes Power-Maverick/DataverseDevTools-VSCode#295
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.
@copilot resolve conflicts
@copilot resolve conflicts
Conflicts resolved in commit 3a5ba1d!
Changes made:
- Updated property names to match main branch refactoring (name, shortName, author instead of toolName, toolShortName, toolAuthor)
- Kept description and emoji fields for the modern card design
- Moved tool commands to
registerToolsCommands.tsas per main branch structure - Integrated with new
ToolsHelperclass instead of deleteddrbHelper - Updated
ToolsListView.tsto use new property names
The modern card-based design is preserved and now compatible with the latest main branch.
Really like that new view... please add it to the next release, I got some ideas to add there...
- Flow Tool
- Entity Documentation Helper
- Plugin Documentation Helper ...