You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
My contribution adds a new instruction, prompt, agent, skill, workflow, or canvas extension file in the correct directory.
The file follows the required naming convention.
The content is clearly structured and follows the example format.
I have tested my instructions, prompt, agent, skill, workflow, or canvas extension with GitHub Copilot.
I have run npm start and verified that README.md is up to date. (npm run build passes.)
I am targeting the main branch for this pull request.
Description
Updates the Artifact Explorer canvas (extensions/pr-artifact-explorer, plugin and skill) with:
Resilience: retry and full restart; background download/index/extract jobs that survive request/view changes; ZIP64 and bounded central-directory handling; soft limit prompts (download, indexing, decompression, idle) that never stop work, with raised limits checked against live progress. Integrity and disk guards stay hard.
Sharing and skill: unified targets (repo, PR, issue, artifact, route) for sharing links and the AI skill.
Browser emulator: localhost/HTTP(S) preview with mobile/tablet/desktop presets, viewport vs. visual zoom, history/refresh, natural-language navigation, real Playwright/Chromium screenshots and device emulation (explicit setup, no silent install), keyboard hints.
Docs tab: built-in usage docs.
Artifact preview: universal Preview/Raw toggle, native video, JUnit viewer, HTML Browser action, per-render race guards, theme sync, open in default browser.
UX: copy title / copy link buttons, #number links to GitHub, compact Back/Forward route history, full PR-detail skeleton.
Workflow re-run: confirmation-gated re-run of the originating Actions run (all or failed jobs), permission- and eligibility-aware, original actor/SHA warning.
Type of Contribution
Update to existing instruction, prompt, agent, plugin, skill, workflow, or canvas extension.
Additional Notes
Verification: extension suite 92/92 (--test-concurrency=2), plugin:validate, skill:validate, npm run build, and line-ending normalization pass. Re-run behavior was tested only against mocked GitHub APIs; no real CI was triggered.
Screenshots
Workflow runs view (default filters: Hide PR runs, Has artifacts).
By submitting this pull request, I confirm that my contribution abides by the Code of Conduct and will be licensed under the MIT License.
Parse JUnit times strictly, showing unknown timings as Not recorded.
Scope video error listener to its live preview and distinguish
network/integrity from decode failures.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 72ee5a2d-bcbb-4e0f-b86f-6ad56d4fc033
Per-term substring matching made 'Browser A' match every row via the 'a' term. Match the whole normalized phrase and cover it in the Chromium regression.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 72ee5a2d-bcbb-4e0f-b86f-6ad56d4fc033
<details class="docs-details"><summary>Set up Chromium if capture is unavailable</summary><p>Setup is explicit; Explorer does not install anything silently. Run <code>npm install</
🟠
package-exec-command
extensions/pr-artifact-explorer/capture.mjs
36
"2. Install the browser once: npx playwright-core install chromium",
The picker emits workflow filenames that normalizeRunFilters rejects. For example, .github/workflows/nightly build.yml produces ref: "nightly build.yml", but selecting it silently drops the workflow filter and queries all repository runs. Check the same filename pattern here and fall back to the workflow ID when it does not match.
This regex backtracks heavily on unmatched backtick runs. In a bounded check, text followed by 8,192 backticks exceeded one second, while 2 MiB of ordinary text completed in 2 ms. Artifact Markdown is rendered synchronously on the canvas UI thread, so a small untrusted file can freeze the explorer despite the size cap. Replace this expression with linear-time delimiter scanning and add a regression for long unmatched runs.
Pagination limit hides results beyond the 990th run
extensions/pr-artifact-explorer/github.mjs:688
At 30 runs per page, this limit exposes only 990 results. A search with 995 results disables Older on page 33 and clamps page 34 back to 33, leaving five runs inaccessible. Define a 1,000-result limit, derive the page ceiling with Math.ceil, and use the result limit for reachable and capped. Update the boundary tests to cover the partial 34th page.
The default Latest scope deduplicated artifacts by name before the status
filter ran, so a retry hid the failing run's artifacts. Filters now apply
before deduplication and status counts reflect the same scope.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 72ee5a2d-bcbb-4e0f-b86f-6ad56d4fc033
Pagination cannot reach final results beyond the 990th run
extensions/pr-artifact-explorer/github.mjs:688
At 30 runs per page, this cap exposes only 990 results. For a search with 991–1,000 results, page 33 reports hasMore: false, and requests for page 34 are clamped to 33, so the final runs cannot be reached. Define a separate 1,000-result limit, derive the page count with Math.ceil(limit / RUNS_PER_PAGE), and use the result limit for reachable and capped. Update the pagination tests to cover the partial 34th page.
The reason will be displayed to describe this comment to others. Learn more.
Thanks — this is a substantial and useful upgrade to Artifact Explorer. Main blocker is the codespell pickup, but can you double-check that there's no HIGH rated feedback from CCR to action
Resolve docs/README.skills.md by regenerating it with npm run build, and
reword a runs.test.mjs branch fixture that codespell flagged.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
- Controlled browser: keep the close timeout referenced, validate the viewport before
launching, coordinate close() with a pending startup, apply an explicit viewport to an
open session
- Runs: hide PR runs by filtering explicitly (GitHub's flag only empties pull_requests),
use workflow ids for filenames the filter rejects, page through all workflows, and make
the final partial page of 1,000 runs reachable
- Markdown: stop U+2028/2029 hanging list parsing, protect link hrefs from emphasis, and
scan code spans in linear time
- Tests: isolate server.test.mjs from the real COPILOT_HOME; add regressions
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
The link and image regexes exhibit quadratic behavior on unmatched label openers, allowing Markdown below the 2 MB cap to freeze the canvas UI; both need bounded parsing and regression tests.
Avoid imposing the 1,000-run ceiling on unfiltered listings
extensions/pr-artifact-explorer/github.mjs:782
The default, unfiltered runs list stops at page 34 because both normalizeRunFilters and this pagination calculation impose a 1,000-result ceiling. GitHub documents that ceiling only for searches using specific filters, including branch, event, and status (API documentation), so older runs are unnecessarily unreachable here. Apply the ceiling only when the outgoing request uses a capped search filter, and update the normalization and pagination tests together.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request Checklist
npm startand verified thatREADME.mdis up to date. (npm run buildpasses.)mainbranch for this pull request.Description
Updates the Artifact Explorer canvas (
extensions/pr-artifact-explorer, plugin and skill) with:#numberlinks to GitHub, compact Back/Forward route history, full PR-detail skeleton.Type of Contribution
Additional Notes
Verification: extension suite 92/92 (
--test-concurrency=2),plugin:validate,skill:validate,npm run build, and line-ending normalization pass. Re-run behavior was tested only against mocked GitHub APIs; no real CI was triggered.Screenshots
Workflow runs view (default filters: Hide PR runs, Has artifacts).
By submitting this pull request, I confirm that my contribution abides by the Code of Conduct and will be licensed under the MIT License.