Skip to content

Add a Links Hub and Multi-agent Orchestration#470

Merged
Power-Maverick merged 10 commits intodevfrom
feat/links-hub
Mar 20, 2026
Merged

Add a Links Hub and Multi-agent Orchestration#470
Power-Maverick merged 10 commits intodevfrom
feat/links-hub

Conversation

@Power-Maverick
Copy link
Copy Markdown
Contributor

Please fill in this template.

  • Use a meaningful title for the pull request.
  • Follow the guidelines from the CONTRIBUTING.md.
  • 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.

Copilot AI review requested due to automatic review settings March 20, 2026 03:08
@github-actions
Copy link
Copy Markdown

Bundle Size Report 📦

Bundle Size
Main Process 953.89 KB
Renderer JS 499.08 KB
Renderer CSS 93.99 KB
Total 1.51 MB

Bundle Analysis Reports

The detailed bundle analysis reports are available in the workflow artifacts:

  • 📊 Main Process: stats-main.html
  • 📊 Renderer Process: stats-renderer.html

Download the artifacts from the workflow run to view interactive visualizations.


Bundle size tracking is now active! This helps prevent bundle bloat.

@Power-Maverick Power-Maverick changed the title Add a Links Hub Add a Links Hub and Multi-agent Orchestration Mar 20, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a new “Links” hub to the Electron renderer sidebar to provide a curated set of external Power Platform resources, plus supporting IPC/preload plumbing for favicon fetching and some repo workflow/docs additions.

Changes:

  • Adds a new Activity Bar entry + sidebar panel that renders grouped links from a JSON collection.
  • Introduces a main-process favicon fetch proxy exposed via preload (toolboxAPI.fetchFavicon) to work around renderer CSP for external images.
  • Adds new bookmark icons and a set of planning/agent-profile docs under .github/.

Reviewed changes

Copilot reviewed 24 out of 26 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
src/renderer/index.html Adds Activity Bar “links” button and new Links sidebar content container.
src/renderer/styles.scss Adds styling for the Links hub list/group presentation.
src/renderer/modules/sidebarManagement.ts Wires rendering on switching to (or re-expanding) the Links sidebar.
src/renderer/modules/importantLinksSidebarManagement.ts New renderer module to render groups/items from JSON, enforce allowlist, and request favicons.
src/renderer/data/importantLinks.json New curated link collection (groups + items).
src/renderer/constants/index.ts Registers the new activity icon for theme switching.
src/renderer/icons/light/bookmark.svg Adds new light theme bookmark icon.
src/renderer/icons/dark/bookmark.svg Adds new dark theme bookmark icon.
src/common/ipc/channels.ts Adds UTIL_CHANNELS.FETCH_FAVICON.
src/common/types/api.ts Extends ToolboxAPI with fetchFavicon.
src/main/preload.ts Exposes toolboxAPI.fetchFavicon to the renderer.
src/main/index.ts Implements IPC handler for FETCH_FAVICON and hardens OPEN_EXTERNAL URL validation.
.vscode/tasks.json Switches build task to pnpm and adds lint/typecheck tasks.
.github/plans/, .github/agents/ Adds mesh-agent workflow docs and plan artifacts.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings March 20, 2026 03:18
@github-actions
Copy link
Copy Markdown

Bundle Size Report 📦

Bundle Size
Main Process 953.92 KB
Renderer JS 499.08 KB
Renderer CSS 93.99 KB
Total 1.51 MB

Bundle Analysis Reports

The detailed bundle analysis reports are available in the workflow artifacts:

  • 📊 Main Process: stats-main.html
  • 📊 Renderer Process: stats-renderer.html

Download the artifacts from the workflow run to view interactive visualizations.


Bundle size tracking is now active! This helps prevent bundle bloat.

Copy link
Copy Markdown
Contributor

Copilot AI commented Mar 20, 2026

@Power-Maverick I've opened a new pull request, #471, to work on those changes. Once the pull request is ready, I'll request review from you.

@Power-Maverick
Copy link
Copy Markdown
Contributor Author

@copilot open a new pull request to apply changes based on the unresolved comments in this thread except for this comment

Copy link
Copy Markdown
Contributor

Copilot AI commented Mar 20, 2026

@Power-Maverick I've opened a new pull request, #472, to work on those changes. Once the pull request is ready, I'll request review from you.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 24 out of 26 changed files in this pull request and generated 11 comments.

* Initial plan

* fix: update getFaviconApiUrl parameter name from host to url

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>
@github-actions
Copy link
Copy Markdown

Bundle Size Report 📦

Bundle Size
Main Process 953.92 KB
Renderer JS 499.28 KB
Renderer CSS 93.99 KB
Total 1.51 MB

Bundle Analysis Reports

The detailed bundle analysis reports are available in the workflow artifacts:

  • 📊 Main Process: stats-main.html
  • 📊 Renderer Process: stats-renderer.html

Download the artifacts from the workflow run to view interactive visualizations.


Bundle size tracking is now active! This helps prevent bundle bloat.

* Initial plan

* fix: address unresolved PR review comments on Links Hub favicon handler and sidebar

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 March 20, 2026 15:36
@github-actions
Copy link
Copy Markdown

Bundle Size Report 📦

Bundle Size
Main Process 953.93 KB
Renderer JS 499.43 KB
Renderer CSS 93.99 KB
Total 1.51 MB

Bundle Analysis Reports

The detailed bundle analysis reports are available in the workflow artifacts:

  • 📊 Main Process: stats-main.html
  • 📊 Renderer Process: stats-renderer.html

Download the artifacts from the workflow run to view interactive visualizations.


Bundle size tracking is now active! This helps prevent bundle bloat.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 24 out of 26 changed files in this pull request and generated 3 comments.

return new Promise<string | null>((resolve) => {
const req = https.get(parsedUrl.toString(), { timeout: 5000 }, (res) => {
const status = res.statusCode ?? 0;
const contentType = res.headers["content-type"] ?? "image/png";
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

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

In the favicon proxy handler, res.headers["content-type"] can be string | string[] | undefined (Node’s IncomingHttpHeaders). The current code assumes it’s always a string and later calls .split(";"), which will throw if it’s an array. Normalize it to a single string before use (e.g., take the first element when it’s an array) to avoid handler crashes.

Suggested change
const contentType = res.headers["content-type"] ?? "image/png";
const rawContentType = res.headers["content-type"];
const contentType = Array.isArray(rawContentType) ? rawContentType[0] ?? "image/png" : rawContentType ?? "image/png";

Copilot uses AI. Check for mistakes.
github.vscode-pull-request-github/doSearch,
github.vscode-pull-request-github/renderIssues,
github.vscode-pull-request-github/activePullRequest,
github.vscode-pull-request-github/openPullRequest,
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

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

The agent profile front matter uses a flow-style tools: sequence with a trailing comma after the last element. Trailing commas are not valid in standard YAML flow sequences and may cause the agent profile to fail parsing/loading. Please remove the trailing comma (or switch to a block-style YAML list) and keep the format consistent across all .agent.md files.

Suggested change
github.vscode-pull-request-github/openPullRequest,
github.vscode-pull-request-github/openPullRequest

Copilot uses AI. Check for mistakes.
const LINK_ICON_COLOR_CLASSES = ["link-icon-color-purple", "link-icon-color-blue", "link-icon-color-teal", "link-icon-color-green", "link-icon-color-orange"] as const;

function getFaviconApiUrl(url: string): string {
return `https://www.google.com/s2/favicons?domain=${url}&sz=64`;
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

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

getFaviconApiUrl() interpolates the URL directly into a query string without URL-encoding. If any curated link ever includes ?, &, #, or other reserved characters, the generated favicon request URL becomes malformed (or can change the request parameters). Encode the value (e.g., encodeURIComponent) when building the favicon API URL.

Suggested change
return `https://www.google.com/s2/favicons?domain=${url}&sz=64`;
const encodedDomain = encodeURIComponent(url);
return `https://www.google.com/s2/favicons?domain=${encodedDomain}&sz=64`;

Copilot uses AI. Check for mistakes.
@Power-Maverick Power-Maverick merged commit 1e928c4 into dev Mar 20, 2026
7 checks passed
@Power-Maverick Power-Maverick deleted the feat/links-hub branch March 20, 2026 15:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants