Skip to content

Fix extension materialization to move bundles into container#2339

Merged
aaronpowell merged 11 commits into
mainfrom
aaronpowell-extension-plugin-materialization
Jul 18, 2026
Merged

Fix extension materialization to move bundles into container#2339
aaronpowell merged 11 commits into
mainfrom
aaronpowell-extension-plugin-materialization

Conversation

@aaronpowell

Copy link
Copy Markdown
Contributor

Summary

  • change extension plugin materialization to move bundle entries into extensions/ instead of copying them
  • keep the existing manifest rewrite behavior during materialization
  • update targeted test coverage to assert source entries are removed after materialization

Validation

  • node --test eng/materialize-plugins.test.mjs
  • node --check eng/materialize-plugins.mjs

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
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
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
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
Change extension-plugin materialization to move root bundle entries into extensions/ instead of copying them, and assert originals are removed in test coverage.

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 08:12
@github-actions github-actions Bot added canvas-extension PR touches canvas extensions workflow PR touches workflow automation labels Jul 17, 2026
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d26008fb-9928-4ba7-b7c8-36f35320f7c1
@github-actions github-actions Bot removed workflow PR touches workflow automation canvas-extension PR touches canvas extensions labels 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

Updates canvas extension packaging for distribution and adds validation for the resulting structure.

Changes:

  • Moves extension bundles into extensions/ and updates materialization tooling.
  • Adds external canvas structure quality gates.
  • Bumps affected extension versions and marketplace metadata.
Show a summary per file
File Description
AGENTS.md Documents source and distribution layouts.
.codespellrc Allows the intentional typo fixture.
.github/plugin/marketplace.json Updates extension versions.
.github/workflows/external-plugin-command-router.yml Propagates canvas gate status.
.github/workflows/external-plugin-intake.yml Propagates canvas gate status.
.github/workflows/external-plugin-pr-quality-gates.yml Reports canvas structure results.
eng/clean-materialized-plugins.mjs Adds extension cleanup handling.
eng/external-plugin-intake.mjs Validates external canvas structure.
eng/external-plugin-pr-quality-gates.mjs Summarizes the new gate.
eng/external-plugin-quality-gates.mjs Implements the canvas structure gate.
eng/external-plugin-quality-gates.test.mjs Tests canvas structure checks.
eng/materialize-plugins.mjs Moves bundles into their container.
eng/materialize-plugins.test.mjs Tests materialization behavior.
eng/validate-plugins.mjs Clarifies source-manifest validation.
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: 2/2 changed files
  • Comments generated: 2
  • Review effort level: Medium

Comment thread eng/materialize-plugins.mjs
Comment thread eng/materialize-plugins.test.mjs Outdated
Copilot AI review requested due to automatic review settings July 17, 2026 08:16

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: 2/2 changed files
  • Comments generated: 3
  • Review effort level: Medium

Comment thread eng/materialize-plugins.mjs
Comment thread eng/materialize-plugins.test.mjs Outdated
Comment thread eng/materialize-plugins.mjs
Materialize extension plugins into extensions/<plugin-name>/... (moved entries) so resulting paths are duplicated by design, and bump extension plugin versions to the next patch release.

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 23:05
@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.

Review details

Comments suppressed due to low confidence (1)

eng/materialize-plugins.mjs:99

  • After these moves, each source directory no longer has its top-level extension.mjs. The publish workflow runs npm run build immediately after materialization, and generate-marketplace.mjs:78-82 only includes extension manifests whose directory still has that file, so the generated distribution marketplace will drop every materialized extension. Update the generator to recognize extensions/<extension-name>/extension.mjs (while retaining support for the source layout), and cover the materialize-then-build sequence.
    moveEntry(
      path.join(extensionPath, entry.name),
      path.join(extensionBundlePath, entry.name)
    );
  • Files reviewed: 21/21 changed files
  • Comments generated: 1
  • Review effort level: Medium

Comment thread eng/materialize-plugins.mjs
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 23:18

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: 24/24 changed files
  • Comments generated: 0 new
  • Review effort level: Medium

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 23:29

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: 24/24 changed files
  • Comments generated: 0 new
  • Review effort level: Medium

@aaronpowell
aaronpowell merged commit 26fe2d1 into main Jul 18, 2026
19 of 20 checks passed
@aaronpowell
aaronpowell deleted the aaronpowell-extension-plugin-materialization branch July 18, 2026 00:49
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants