Repository navigation
Update sentry-triage canvas to 1.3.0 - #5611
aaronpowell merged 1 commit into
Conversation
Sync the canvas extension with pierceboggan/sentry-canvas (natalierharris-polish-sentry-triage-canvas): paged issue fetching, an on-demand issue detail view, a roomier layout, and event trend sparklines plus an overview chart. Bump the plugin to 1.3.0 and note the changes in the plugin README. Co-authored-by: Natalie Harris <natalierharris@users.noreply.github.com> Co-authored-by: Pierce Boggan <piboggan@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
🚦 Submission status: 👀 Ready for reviewRisk tier: Why this tier
Automated checks
Review
Commands
Updated for |
🔒 PR Risk Scan ResultsScanned 12 changed file(s).
|
🧩 Canvas smoke test✅ Passed · 0 error(s), 0 warning(s)
Plugin
|
| Field | Value |
|---|---|
| Description | Scan live Sentry issues in a Copilot canvas, group them by urgency, and hand issues off for tracking or a fix PR. |
| Author | Liz Tom — https://github.com/liztom |
| License | MIT |
| Keywords | canvas, copilot-canvas, copilot-extension, error-triage, incident-response, on-call, sentry |
| Extensions | sentry-triage |
| Materialize | ✅ |
| Install | ✅ |
Changed plugin files
plugins/sentry-triage/README.mdplugins/sentry-triage/plugin.json
Extension sentry-triage
| Field | Value |
|---|---|
| Registered by | sentry-triage |
| Package | sentry-triage 1.2.0 |
| Preview | 544×306, 307.2 KB |
| Modules | 12 (12 reachable from extension.mjs) |
| Files | 18 |
Permissions and capabilities (static analysis of modules reachable from extension.mjs)
- Spawns processes (node:child_process)
- File system access (node:fs)
- Network sockets / local server (node:http, node:net, ...)
- Host information (node:os)
- Outbound HTTP requests (fetch)
- Reads environment variables (process.env)
- Third-party runtime packages: sentry
Changed extension files
extensions/sentry-triage/components/card.mjsextensions/sentry-triage/components/category.mjsextensions/sentry-triage/components/page.mjsextensions/sentry-triage/extension.mjsextensions/sentry-triage/sentry.mjsextensions/sentry-triage/sentryClient.mjsextensions/sentry-triage/server.mjsextensions/sentry-triage/state.mjsextensions/sentry-triage/styles.mjs
Static checks compile modules without executing them. Minimum preview size is configurable with CANVAS_PREVIEW_MIN_WIDTH/CANVAS_PREVIEW_MIN_HEIGHT. Workflow run
There was a problem hiding this comment.
🟡 Changes recommended
Project scans can truncate silently, and issue-detail lookups and caching can display another organization’s incident.
6 open issues
Scope detail caches and panels by organization · New Scope issue.view lookups to the selected organization · New Paginate cursorless project-scoped issue lists · New Restore the Plain-English summary toggle · New End loading and offer retry after detail request failure · New Disable looping animations for reduced motion · New
What changed in this PR
Updates the existing Sentry Triage canvas to 1.3.0 with faster issue navigation, a richer overview, and refreshed presentation.
Changes:
- Adds issue drill-in, prefetching, and priority-aware SDK scheduling.
- Introduces paged issue retrieval, tabbed filtering, event trends, and revised layouts.
- Updates release notes and plugin marketplace metadata.
| File | Description |
|---|---|
plugins/sentry-triage/README.md |
Documents the 1.3.0 features. |
plugins/sentry-triage/plugin.json |
Bumps the plugin version to 1.3.0. |
extensions/sentry-triage/styles.mjs |
Styles the redesigned dashboard, controls, and detail panel. |
extensions/sentry-triage/state.mjs |
Shortens the default model label to “Auto.” |
extensions/sentry-triage/server.mjs |
Adds the issue-detail API endpoint. |
extensions/sentry-triage/sentryClient.mjs |
Adds priority scheduling, detail caching, and paged issue retrieval. |
extensions/sentry-triage/sentry.mjs |
Maps event trends and simplifies category labels. |
extensions/sentry-triage/extension.mjs |
Connects detail requests to prioritized SDK calls. |
extensions/sentry-triage/components/page.mjs |
Adds the overview, tabbed filtering, and issue-detail interactions. |
extensions/sentry-triage/components/category.mjs |
Replaces category sections with a tabbed issue table. |
extensions/sentry-triage/components/card.mjs |
Adds detail buttons, compact metrics, and sparklines. |
.github/plugin/marketplace.json |
Updates the published Sentry Triage version. |
Review effort: Max
| const hit = cache.get(key); | ||
| if (hit && !hit.detail.partial && Date.now() - hit.at < FRESH_MS) { render(hit.detail); return; } |
| } | ||
|
|
||
| export async function issueDetail(org, key, { part = 'full', priority = PRIORITY.interactive } = {}) { | ||
| const view = await cachedCall(`view:${org}:${key}`, priority, async () => (await getSdk()).issue.view({ issue: key, spans: 8 })) |
| const next = res && typeof res === 'object' && res.hasMore === true && typeof res.nextCursor === 'string' ? res.nextCursor.trim() : '' | ||
| if (!next || page.length === 0) break |
| + '</div>' | ||
| + '<span class="card-reason">' + escapeHtml(issue.reason) + '</span>' | ||
| + (meta ? '<span class="card-meta">' + meta + '</span>' : '') | ||
| + '<button type="button" class="card-summary card-open" data-key="' + key + '" title="View issue details">' + escapeHtml(issue.summary) + '</button>' |
| }, () => fail("Network error.")); | ||
| request(key, "full").then((res) => { | ||
| if (!live()) return; | ||
| if (!res.ok || !res.detail) { fail(res.error); return; } |
| font-size: 13px; | ||
| z-index: 1000; | ||
| @media (prefers-reduced-motion: reduce) { | ||
| *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; } |



Pull Request Checklist
npm startand verified thatREADME.mdis up to date.mainbranch for this pull request.Description
Syncs
extensions/sentry-triage/with the latest canvas work frompierceboggan/sentry-canvas@natalierharris-polish-sentry-triage-canvas, by Natalie Harris and Pierce Boggan. That branch started from the current upstream code (after #2948), so this is an additive update.Changes:
sentryClient.mjsfetches issue lists as 100-item pages, each queued as its own SDK call with interactive/prefetch priority. Opening an issue during a scan drops from 30+ seconds to about 7.POST /api/issue-detailendpoint inserver.mjs(key validated against^[A-Za-z0-9_.-]{1,80}$) backed byissueDetail().page.mjsandstyles.mjswith more spacing and larger titles. Category labels drop emoji prefixes.statsfield Sentry already returns, so there are no extra API calls.plugins/sentry-triage/plugin.jsonbumped 1.2.0 → 1.3.0, with a "What's new" section in the plugin README.marketplace.jsonregenerated.The original plugin is by Liz Tom (MIT). The license and attribution are unchanged.
Type of Contribution
Additional Notes
package-lock.jsonwas left out on purpose. ItsresolvedURLs point at an internal feed, and upstream doesn't ship a lockfile for this extension.package.jsonis unchanged.copilot plugin install sentry-triage@awesome-copilot.Validation:
npm run plugin:validate: passed (all 108 plugins valid)npm run build: passed (README.md/marketplace.jsonregenerated; only the sentry-triage version changed)node --checkon every.mjsinextensions/sentry-triage/: passedbash eng/fix-line-endings.sh: didn't run cleanly on macOS (GNUsedsyntax). The changed files were checked by hand and contain no CRLF.By submitting this pull request, I confirm that my contribution abides by the Code of Conduct and will be licensed under the MIT License.