Skip to content

Add contributor attribution to canvas extension cards#2111

Open
ashleywolf wants to merge 1 commit into
stagedfrom
ashleywolf/extension-contributors
Open

Add contributor attribution to canvas extension cards#2111
ashleywolf wants to merge 1 commit into
stagedfrom
ashleywolf/extension-contributors

Conversation

@ashleywolf

Copy link
Copy Markdown
Collaborator

Every canvas extension on the extensions page now credits the person who built it, the same by {author} line that plugins and samples already show.

What changed

  • Added a standard npm author field ({ name, url }) to each extension's package.json, and an author field to the Coffilot entry in external.json.
  • eng/generate-website-data.mjs reads the author (npm string or object form) and emits it on each extension in the generated extensions.json.
  • The card renderer (extensions-render.ts) and the details modal (extensions.ts) render the name as a link to the contributor's GitHub profile.

How I picked each contributor

I traced each extension to the author of its original PR or first commit on staged, excluding the Copilot co-author, since main is published by a bot and loses that history.

Extension Contributor
accessibility-kanban, color-orb, diagram-viewer, feedback-themes, gesture-review, where-was-i @aaronpowell (#1900)
backlog-swipe-triage, release-notes-showcase @jamesmontemagno (#1987)
arcade-canvas @DanWahlin (#2031)
chromium-control-canvas @AndreaGriffiths11
coffilot (external) @jdubois

For arcade-canvas and chromium-control-canvas I kept the name each author already set in package.json and only added their profile URL.

Verifying

  • npm run website:data emits an author for all 11 extensions (10 local + 1 external).
  • astro build passes with no type errors.
  • Local preview shows the by {name} profile link on every card and in the details modal, for both local and external extensions.

The generated website/public/data/extensions.json is gitignored, so this PR only touches source.

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

Each canvas extension card now shows who contributed it, matching the
by-author line already used on plugin and sample cards. Adds a standard
npm author field to each extension (and the external entry), reads it in
the website data generator, and renders it on the card and details modal.

Contributors were sourced from the original PR/commit author for each
extension on the staged branch.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 24, 2026 02:41
@ashleywolf ashleywolf requested a review from aaronpowell as a code owner June 24, 2026 02:41
@github-actions github-actions Bot added canvas-extension PR touches canvas extensions website-update PR touches website content or code labels Jun 24, 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

This pull request adds contributor attribution for canvas extensions on the website, emitting normalized author metadata during website data generation and rendering a by {author} line in both extension cards and the extension details modal.

Changes:

  • Added author metadata (npm author field / external registry author) for all canvas extensions.
  • Extended eng/generate-website-data.mjs to normalize and emit author into generated extensions website data.
  • Updated the extensions listing renderer and details modal to display author name (optionally linked to the author URL).
Show a summary per file
File Description
website/src/scripts/pages/extensions.ts Renders by {author} in the extension details modal (with optional outbound link).
website/src/scripts/pages/extensions-render.ts Renders by {author} on extension cards (with optional outbound link).
eng/generate-website-data.mjs Normalizes author values (string or {name,url}) and emits them into extension data.
extensions/accessibility-kanban/package.json Adds npm author metadata for attribution.
extensions/arcade-canvas/package.json Converts npm author from string to object and adds URL.
extensions/backlog-swipe-triage/package.json Adds npm author metadata for attribution.
extensions/chromium-control-canvas/package.json Converts npm author from string to object and adds URL.
extensions/color-orb/package.json Adds npm author metadata for attribution.
extensions/diagram-viewer/package.json Adds npm author metadata for attribution.
extensions/feedback-themes/package.json Adds npm author metadata for attribution.
extensions/gesture-review/package.json Adds npm author metadata for attribution.
extensions/release-notes-showcase/package.json Adds npm author metadata for attribution.
extensions/where-was-i/package.json Adds npm author metadata for attribution.
extensions/external.json Adds author metadata for the external Coffilot entry.

Copilot's findings

  • Files reviewed: 14/14 changed files
  • Comments generated: 2

Comment on lines +99 to +103
? `<a href="${sanitizeUrl(
item.author.url
)}" target="_blank" rel="noopener noreferrer">${escapeHtml(
item.author.name
)}</a>`
Comment on lines +185 to +189
? `<span class="resource-author">by <a href="${sanitizeUrl(
item.author.url
)}" target="_blank" rel="noopener noreferrer">${escapeHtml(
item.author.name
)}</a></span>`
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 website-update PR touches website content or code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants