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.
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. Use an existing Playwri
🟠
package-exec-command
extensions/pr-artifact-explorer/capture.mjs
37
"2. Install the browser once: npx playwright install chromium",
🟠
package-exec-command
extensions/pr-artifact-explorer/capture.test.mjs
32
if (error.code === "playwright_missing") assert.match(error.message, /npx playwright install chromium/);
Risk tier:merge-risk:high — Privileged execution, automation, or review-policy change Required to merge: passing submission-gate checks plus 1 approval from reviewers with write access, including a maintainer with admin or maintain permission.
Why this tier
Spawns processes or evaluates code in extensions/pr-artifact-explorer/external-open.mjs
Spawns processes or evaluates code in extensions/pr-artifact-explorer/markdown-preview.test.mjs
✓ [spec-compliance] All 1 skill(s) are spec-compliant.
ℹ️
✓ spec-compliance: All spec checks passed.
ℹ️
✓ [valid-refs] All file references across 1 skill(s) are valid.
ℹ️
✓ valid-refs: All file references resolve to existing files within the skill directory.
ℹ️
1 skill(s) linted, 1 passed
Full linter output
### Linting skills/pr-artifact-explorer
✅ pr-artifact-explorer (2/2 checks passed)
✓ [spec-compliance] All 1 skill(s) are spec-compliant.
✓ spec-compliance: All spec checks passed.
✓ [valid-refs] All file references across 1 skill(s) are valid.
✓ valid-refs: All file references resolve to existing files within the skill directory.
1 skill(s) linted, 1 passed
Preserve or terminate browsers after shutdown timeout
extensions/pr-artifact-explorer/capture.mjs:392
When browser shutdown times out, closeBrowserBounded returns false, but this method has already discarded every reference to the still-running browser. The process can no longer be retried or reclaimed, so repeated controlled sessions can leak Chromium processes. Preserve a cleanup handle on timeout or forcibly terminate the browser process before clearing the fields.
Trim retained failed stream jobs
extensions/pr-artifact-explorer/jobs.mjs:208
Failed stream jobs are deliberately retained, but unlike artifact jobs this path never calls #trim(). Repeated failed decompressions therefore grow #jobs, /api/jobs, and the visible failed-job panel without bound despite MAX_FINISHED_JOBS. Trim after retaining a failed stream and persist if trimming removes stored artifact history.
Dispatch natural-language browser commands to the correct channel
extensions/pr-artifact-explorer/targets.mjs:164
These parser branches advertise natural-language zoom, viewport, rotate, screenshot, and navigation commands, but the open_target action only executes back/forward/refresh when a controlled browser is active and rejects every other command target. Thus skill examples such as zoom 150%, tablet, screenshot, and even go back in the normal preview always fail. Dispatch these commands to the regular browser command channel (and screenshot action), with controlled-browser handling where appropriate.
Reject unsafe numeric IDs instead of returning null targets
extensions/pr-artifact-explorer/targets.mjs:202
positive() returns null for integers outside JavaScript's safe range, but the natural-language parser still returns an artifact/PR/issue target containing that null ID. For example, show artifact #9007199254740992 in o/r becomes { artifactId: null } and later generates a broken route instead of a user-facing input error.
if (url.protocol !== "http:" && url.protocol !== "https:") {
throw new CaptureError("invalid_url", "Only http and https URLs can be captured.");
}
return url;
This branch has not been deployed
No deployments
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.By submitting this pull request, I confirm that my contribution abides by the Code of Conduct and will be licensed under the MIT License.