Skip to content

Migrate extension plugin materialization to extensions container#2334

Merged
aaronpowell merged 7 commits into
mainfrom
aaronpowell-extension-plugin-materialization
Jul 17, 2026
Merged

Migrate extension plugin materialization to extensions container#2334
aaronpowell merged 7 commits into
mainfrom
aaronpowell-extension-plugin-materialization

Conversation

@aaronpowell

Copy link
Copy Markdown
Contributor

Summary

  • materialize extension plugin bundles into a dedicated extensions/ directory during publish materialization
  • keep source extension manifests at "extensions": "." and rewrite to "extensions": "extensions" only in materialized output
  • update plugin cleanup and validation logic to support the source-vs-materialized manifest behavior
  • add a targeted test for extension materialization layout and manifest rewrite
  • bump extension plugin versions and regenerate marketplace metadata

Validation

  • node --test eng/materialize-plugins.test.mjs
  • npm run plugin:validate
  • npm run plugin:generate-marketplace

Materialize extension plugins into a dedicated extensions/ container, validate the new manifest convention, and bump extension plugin versions.

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

Copilot-Session: d26008fb-9928-4ba7-b7c8-36f35320f7c1
Restore source extension manifests to "extensions": "." while preserving materialization-time rewrite to "extensions" in distribution output.

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

Copilot-Session: d26008fb-9928-4ba7-b7c8-36f35320f7c1
Copilot AI review requested due to automatic review settings July 17, 2026 04:21
@github-actions github-actions Bot added the canvas-extension PR touches canvas extensions label Jul 17, 2026

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

Migrates extension bundles into dedicated extensions/ containers for distribution while preserving source manifest conventions.

Changes:

  • Adds extension materialization and manifest rewriting.
  • Updates cleanup, validation, documentation, and tests.
  • Bumps extension versions and marketplace metadata.
Show a summary per file
File Description
AGENTS.md Documents source and distribution manifest behavior.
.github/plugin/marketplace.json Updates published extension versions.
eng/materialize-plugins.mjs Materializes extension bundles.
eng/materialize-plugins.test.mjs Tests bundle layout and manifest rewrite.
eng/clean-materialized-plugins.mjs Adds extension cleanup; contains a blocking error.
eng/validate-plugins.mjs Validates source manifest conventions.
extensions/accessibility-kanban/.github/plugin/plugin.json Bumps version.
extensions/apng-studio/.github/plugin/plugin.json Bumps version.
extensions/arcade-canvas/.github/plugin/plugin.json Bumps version.
extensions/backlog-swipe-triage/.github/plugin/plugin.json Bumps version.
extensions/chromium-control-canvas/.github/plugin/plugin.json Bumps version.
extensions/color-orb/.github/plugin/plugin.json Bumps version.
extensions/connector-namespaces/.github/plugin/plugin.json Bumps version.
extensions/diagram-viewer/.github/plugin/plugin.json Bumps version.
extensions/feedback-themes/.github/plugin/plugin.json Bumps version.
extensions/gesture-review/.github/plugin/plugin.json Bumps version.
extensions/java-modernization-studio/.github/plugin/plugin.json Bumps version.
extensions/release-notes-showcase/.github/plugin/plugin.json Bumps version.
extensions/repo-actions-hub/.github/plugin/plugin.json Bumps version.
extensions/site-studio/.github/plugin/plugin.json Bumps version.
extensions/tiny-tool-town-submitter/.github/plugin/plugin.json Bumps version.
extensions/token-pacman/.github/plugin/plugin.json Bumps version.
extensions/where-was-i/.github/plugin/plugin.json Bumps version.
extensions/work-hub/.github/plugin/plugin.json Bumps version.

Review details

  • Files reviewed: 24/24 changed files
  • Comments generated: 1
  • Review effort level: Medium

Comment thread eng/clean-materialized-plugins.mjs Outdated
Add intake and quality-gate checks for canvas-tagged external plugins so they must include extensions/extension.mjs and optional manifest extensions is validated when present.

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

Copilot-Session: d26008fb-9928-4ba7-b7c8-36f35320f7c1
Copilot AI review requested due to automatic review settings July 17, 2026 04:37

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.

Review details

  • Files reviewed: 27/27 changed files
  • Comments generated: 1
  • Review effort level: Medium

Comment thread eng/clean-materialized-plugins.mjs Outdated
Declare EXTENSIONS_DIR in clean-materialized-plugins and run extension cleanup once after plugin cleanup. Also normalize misspelled-key detection strings to satisfy spelling checks without changing validation behavior.

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

Copilot-Session: d26008fb-9928-4ba7-b7c8-36f35320f7c1
Copilot AI review requested due to automatic review settings July 17, 2026 07:47

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.

Review details

  • Files reviewed: 27/27 changed files
  • Comments generated: 2
  • Review effort level: Medium

Comment thread eng/external-plugin-quality-gates.mjs Outdated
Comment thread eng/external-plugin-quality-gates.mjs Outdated
Copilot AI review requested due to automatic review settings July 17, 2026 07:51

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.

Review details

  • Files reviewed: 28/28 changed files
  • Comments generated: 1
  • Review effort level: Medium

Comment thread eng/external-plugin-quality-gates.mjs Outdated
Comment on lines +647 to +651
if (canvasStructureResult.status === "fail") {
result.version_match_status = "fail";
} else if (canvasStructureResult.status === "infra_error" && result.version_match_status !== "fail") {
result.version_match_status = "infra_error";
} else if (canvasStructureResult.status === "pass" && result.version_match_status === "not_run") {
Track canvas structure as its own gate status and output, include it in aggregate summaries, and enforce Git object types so extensions/ is a tree and extensions/extension.mjs is a blob.

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

Copilot-Session: d26008fb-9928-4ba7-b7c8-36f35320f7c1
Copilot AI review requested due to automatic review settings July 17, 2026 07:58
@github-actions github-actions Bot added the workflow PR touches workflow automation label Jul 17, 2026

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.

Review details

  • Files reviewed: 32/32 changed files
  • Comments generated: 1
  • Review effort level: Medium

Comment thread eng/external-plugin-quality-gates.mjs Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings July 17, 2026 08:03
@aaronpowell
aaronpowell merged commit 40665c2 into main Jul 17, 2026
16 checks passed
@aaronpowell
aaronpowell deleted the aaronpowell-extension-plugin-materialization branch July 17, 2026 08:04

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.

Review details

  • Files reviewed: 32/32 changed files
  • Comments generated: 1
  • Review effort level: Medium

Comment on lines +548 to +550
for (const locator of locators) {
if (locator !== primaryFetchSpec) {
const fetchResult = fetchLocatorIntoRepo(repoDir, locator);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

canvas-extension PR touches canvas extensions workflow PR touches workflow automation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants