Remove timestamp from CI branch names, implement 1:1 PR relationship - #493

Draft
pranaygp with Copilot wants to merge 6 commits into
pranaygp/external-collaborator-cifrom
copilot/sub-pr-325
Draft

Remove timestamp from CI branch names, implement 1:1 PR relationship#493
pranaygp with Copilot wants to merge 6 commits into
pranaygp/external-collaborator-cifrom
copilot/sub-pr-325

Conversation

CopilotAI commented Dec 2, 2025

Copy link
Copy Markdown
Contributor
  • Remove timestamp from CI branch name to use PR number only
  • Check if CI branch already exists before creating
  • Update existing branch if it already exists (force push)
  • Check if CI PR already exists before creating
  • Update existing PR instead of creating a new one
  • Update comments to reflect reuse behavior
  • Filter CI PRs by label to avoid selecting wrong PR
  • Ensure labels are present on both new and existing PRs
  • Fix API response data structure handling
  • Handle unlabeled existing PRs gracefully with title validation
  • Add documentation for label handling logic
  • Resolve merge conflicts with base PR (script extraction)
  • Apply all changes to new create-ci-pr.js script file

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

@changeset-bot

changeset-botBot commented Dec 2, 2025

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 0889038

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercelBot commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
example-nextjs-workflow-turbopackReadyReadyPreviewCommentDec 2, 2025 6:53pm
example-nextjs-workflow-webpackReadyReadyPreviewCommentDec 2, 2025 6:53pm
example-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-astro-workflowErrorErrorDec 2, 2025 6:53pm
workbench-express-workflowErrorErrorDec 2, 2025 6:53pm
workbench-hono-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-nitro-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-nuxt-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-sveltekit-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-vite-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workflow-docsReadyReadyPreviewCommentDec 2, 2025 6:53pm

Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
@pranaygp

Copy link
Copy Markdown
Contributor

@copilot resolve merge conflicts

Comment thread.github/workflows/trigger-ci.yml Outdated
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>

CopilotAI commented Dec 2, 2025

Copy link
Copy Markdown
ContributorAuthor

@copilot resolve merge conflicts

Merge conflicts resolved in commit 0889038.

The base PR #325 was updated to extract inline GitHub Action scripts into separate files. I've:

  • Merged the latest changes from PR Enable ci for external collaborators #325
  • Applied all my timestamp removal and PR reuse changes to the new .github/scripts/create-ci-pr.js file
  • Kept the workflow file using the extracted script references

All functionality is preserved with the same 1:1 PR relationship behavior.

if (existingPR.title.startsWith('[CI Test]')) {
// Use the existing PR and add the labels
ciPR = existingPR;
isNewPR = true; // Treat as new to ensure labels are added

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.

Suggested change
isNewPR=true;// Treat as new to ensure labels are added
isNewPR=false;// This is an existing PR being reused, not a new one

When reusing an existing CI test PR without the 'ci-test' label but with the correct title, the isNewPR flag is incorrectly set to true, causing the comment to say "CI test created" instead of "CI test updated".

View Details

Analysis

Incorrect isNewPR flag causes misleading message for reused CI test PRs

What fails: When reusing an existing CI test PR that lacks the 'ci-test' label but has a title starting with '[CI Test]', the isNewPR flag is incorrectly set to true at line 54 of .github/scripts/create-ci-pr.js. This causes the user comment at line 75 to say "✅ CI test created" instead of "✅ CI test updated", which is misleading since the PR is being reused, not newly created.

How to reproduce:

  1. Trigger /run-ci on an external PR that creates a new CI test PR (branch: ci-test/{prNumber})
  2. The initial comment will correctly say "✅ CI test created"
  3. Manually remove the 'ci-test' label from the CI test PR
  4. Trigger /run-ci again on the same external PR
  5. The code will find the existing CI test PR without the label (line 31), verify it has the correct title (line 50), and reuse it (line 52)
  6. The isNewPR flag is set to true (line 54), causing the comment to incorrectly say "✅ CI test created" again

Expected: The message should say "✅ CI test updated" because the code path represents reusing an existing PR (line 52: ciPR = existingPR), not creating a new one. The labels are added automatically via the label-adding logic (lines 60-70), so setting isNewPR = true is unnecessary and incorrect.

Fix: Changed line 54 from isNewPR = true to isNewPR = false, with an updated comment clarifying that this code path represents an existing PR being reused. The label-adding logic continues to work correctly in all scenarios.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@pranaygp
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Remove timestamp from CI branch names, implement 1:1 PR relationship - #493

Draft
pranaygp with Copilot wants to merge 6 commits into
pranaygp/external-collaborator-cifrom
copilot/sub-pr-325
Draft

Remove timestamp from CI branch names, implement 1:1 PR relationship#493
pranaygp with Copilot wants to merge 6 commits into
pranaygp/external-collaborator-cifrom
copilot/sub-pr-325

Conversation

CopilotAI commented Dec 2, 2025

Copy link
Copy Markdown
Contributor
  • Remove timestamp from CI branch name to use PR number only
  • Check if CI branch already exists before creating
  • Update existing branch if it already exists (force push)
  • Check if CI PR already exists before creating
  • Update existing PR instead of creating a new one
  • Update comments to reflect reuse behavior
  • Filter CI PRs by label to avoid selecting wrong PR
  • Ensure labels are present on both new and existing PRs
  • Fix API response data structure handling
  • Handle unlabeled existing PRs gracefully with title validation
  • Add documentation for label handling logic
  • Resolve merge conflicts with base PR (script extraction)
  • Apply all changes to new create-ci-pr.js script file

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

@changeset-bot

changeset-botBot commented Dec 2, 2025

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 0889038

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercelBot commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
example-nextjs-workflow-turbopackReadyReadyPreviewCommentDec 2, 2025 6:53pm
example-nextjs-workflow-webpackReadyReadyPreviewCommentDec 2, 2025 6:53pm
example-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-astro-workflowErrorErrorDec 2, 2025 6:53pm
workbench-express-workflowErrorErrorDec 2, 2025 6:53pm
workbench-hono-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-nitro-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-nuxt-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-sveltekit-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-vite-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workflow-docsReadyReadyPreviewCommentDec 2, 2025 6:53pm

Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
@pranaygp

Copy link
Copy Markdown
Contributor

@copilot resolve merge conflicts

Comment thread.github/workflows/trigger-ci.yml Outdated
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>

CopilotAI commented Dec 2, 2025

Copy link
Copy Markdown
ContributorAuthor

@copilot resolve merge conflicts

Merge conflicts resolved in commit 0889038.

The base PR #325 was updated to extract inline GitHub Action scripts into separate files. I've:

  • Merged the latest changes from PR Enable ci for external collaborators #325
  • Applied all my timestamp removal and PR reuse changes to the new .github/scripts/create-ci-pr.js file
  • Kept the workflow file using the extracted script references

All functionality is preserved with the same 1:1 PR relationship behavior.

if (existingPR.title.startsWith('[CI Test]')) {
// Use the existing PR and add the labels
ciPR = existingPR;
isNewPR = true; // Treat as new to ensure labels are added

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.

Suggested change
isNewPR=true;// Treat as new to ensure labels are added
isNewPR=false;// This is an existing PR being reused, not a new one

When reusing an existing CI test PR without the 'ci-test' label but with the correct title, the isNewPR flag is incorrectly set to true, causing the comment to say "CI test created" instead of "CI test updated".

View Details

Analysis

Incorrect isNewPR flag causes misleading message for reused CI test PRs

What fails: When reusing an existing CI test PR that lacks the 'ci-test' label but has a title starting with '[CI Test]', the isNewPR flag is incorrectly set to true at line 54 of .github/scripts/create-ci-pr.js. This causes the user comment at line 75 to say "✅ CI test created" instead of "✅ CI test updated", which is misleading since the PR is being reused, not newly created.

How to reproduce:

  1. Trigger /run-ci on an external PR that creates a new CI test PR (branch: ci-test/{prNumber})
  2. The initial comment will correctly say "✅ CI test created"
  3. Manually remove the 'ci-test' label from the CI test PR
  4. Trigger /run-ci again on the same external PR
  5. The code will find the existing CI test PR without the label (line 31), verify it has the correct title (line 50), and reuse it (line 52)
  6. The isNewPR flag is set to true (line 54), causing the comment to incorrectly say "✅ CI test created" again

Expected: The message should say "✅ CI test updated" because the code path represents reusing an existing PR (line 52: ciPR = existingPR), not creating a new one. The labels are added automatically via the label-adding logic (lines 60-70), so setting isNewPR = true is unnecessary and incorrect.

Fix: Changed line 54 from isNewPR = true to isNewPR = false, with an updated comment clarifying that this code path represents an existing PR being reused. The label-adding logic continues to work correctly in all scenarios.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@pranaygp
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Remove timestamp from CI branch names, implement 1:1 PR relationship - #493

Draft
pranaygp with Copilot wants to merge 6 commits into
pranaygp/external-collaborator-cifrom
copilot/sub-pr-325
Draft

Remove timestamp from CI branch names, implement 1:1 PR relationship#493
pranaygp with Copilot wants to merge 6 commits into
pranaygp/external-collaborator-cifrom
copilot/sub-pr-325

Conversation

CopilotAI commented Dec 2, 2025

Copy link
Copy Markdown
Contributor
  • Remove timestamp from CI branch name to use PR number only
  • Check if CI branch already exists before creating
  • Update existing branch if it already exists (force push)
  • Check if CI PR already exists before creating
  • Update existing PR instead of creating a new one
  • Update comments to reflect reuse behavior
  • Filter CI PRs by label to avoid selecting wrong PR
  • Ensure labels are present on both new and existing PRs
  • Fix API response data structure handling
  • Handle unlabeled existing PRs gracefully with title validation
  • Add documentation for label handling logic
  • Resolve merge conflicts with base PR (script extraction)
  • Apply all changes to new create-ci-pr.js script file

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

@changeset-bot

changeset-botBot commented Dec 2, 2025

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 0889038

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercelBot commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
example-nextjs-workflow-turbopackReadyReadyPreviewCommentDec 2, 2025 6:53pm
example-nextjs-workflow-webpackReadyReadyPreviewCommentDec 2, 2025 6:53pm
example-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-astro-workflowErrorErrorDec 2, 2025 6:53pm
workbench-express-workflowErrorErrorDec 2, 2025 6:53pm
workbench-hono-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-nitro-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-nuxt-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-sveltekit-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-vite-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workflow-docsReadyReadyPreviewCommentDec 2, 2025 6:53pm

Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
@pranaygp

Copy link
Copy Markdown
Contributor

@copilot resolve merge conflicts

Comment thread.github/workflows/trigger-ci.yml Outdated
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>

CopilotAI commented Dec 2, 2025

Copy link
Copy Markdown
ContributorAuthor

@copilot resolve merge conflicts

Merge conflicts resolved in commit 0889038.

The base PR #325 was updated to extract inline GitHub Action scripts into separate files. I've:

  • Merged the latest changes from PR Enable ci for external collaborators #325
  • Applied all my timestamp removal and PR reuse changes to the new .github/scripts/create-ci-pr.js file
  • Kept the workflow file using the extracted script references

All functionality is preserved with the same 1:1 PR relationship behavior.

if (existingPR.title.startsWith('[CI Test]')) {
// Use the existing PR and add the labels
ciPR = existingPR;
isNewPR = true; // Treat as new to ensure labels are added

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.

Suggested change
isNewPR=true;// Treat as new to ensure labels are added
isNewPR=false;// This is an existing PR being reused, not a new one

When reusing an existing CI test PR without the 'ci-test' label but with the correct title, the isNewPR flag is incorrectly set to true, causing the comment to say "CI test created" instead of "CI test updated".

View Details

Analysis

Incorrect isNewPR flag causes misleading message for reused CI test PRs

What fails: When reusing an existing CI test PR that lacks the 'ci-test' label but has a title starting with '[CI Test]', the isNewPR flag is incorrectly set to true at line 54 of .github/scripts/create-ci-pr.js. This causes the user comment at line 75 to say "✅ CI test created" instead of "✅ CI test updated", which is misleading since the PR is being reused, not newly created.

How to reproduce:

  1. Trigger /run-ci on an external PR that creates a new CI test PR (branch: ci-test/{prNumber})
  2. The initial comment will correctly say "✅ CI test created"
  3. Manually remove the 'ci-test' label from the CI test PR
  4. Trigger /run-ci again on the same external PR
  5. The code will find the existing CI test PR without the label (line 31), verify it has the correct title (line 50), and reuse it (line 52)
  6. The isNewPR flag is set to true (line 54), causing the comment to incorrectly say "✅ CI test created" again

Expected: The message should say "✅ CI test updated" because the code path represents reusing an existing PR (line 52: ciPR = existingPR), not creating a new one. The labels are added automatically via the label-adding logic (lines 60-70), so setting isNewPR = true is unnecessary and incorrect.

Fix: Changed line 54 from isNewPR = true to isNewPR = false, with an updated comment clarifying that this code path represents an existing PR being reused. The label-adding logic continues to work correctly in all scenarios.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@pranaygp
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Remove timestamp from CI branch names, implement 1:1 PR relationship - #493

Draft
pranaygp with Copilot wants to merge 6 commits into
pranaygp/external-collaborator-cifrom
copilot/sub-pr-325
Draft

Remove timestamp from CI branch names, implement 1:1 PR relationship#493
pranaygp with Copilot wants to merge 6 commits into
pranaygp/external-collaborator-cifrom
copilot/sub-pr-325

Conversation

CopilotAI commented Dec 2, 2025

Copy link
Copy Markdown
Contributor
  • Remove timestamp from CI branch name to use PR number only
  • Check if CI branch already exists before creating
  • Update existing branch if it already exists (force push)
  • Check if CI PR already exists before creating
  • Update existing PR instead of creating a new one
  • Update comments to reflect reuse behavior
  • Filter CI PRs by label to avoid selecting wrong PR
  • Ensure labels are present on both new and existing PRs
  • Fix API response data structure handling
  • Handle unlabeled existing PRs gracefully with title validation
  • Add documentation for label handling logic
  • Resolve merge conflicts with base PR (script extraction)
  • Apply all changes to new create-ci-pr.js script file

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

@changeset-bot

changeset-botBot commented Dec 2, 2025

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 0889038

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercelBot commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
example-nextjs-workflow-turbopackReadyReadyPreviewCommentDec 2, 2025 6:53pm
example-nextjs-workflow-webpackReadyReadyPreviewCommentDec 2, 2025 6:53pm
example-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-astro-workflowErrorErrorDec 2, 2025 6:53pm
workbench-express-workflowErrorErrorDec 2, 2025 6:53pm
workbench-hono-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-nitro-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-nuxt-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-sveltekit-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-vite-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workflow-docsReadyReadyPreviewCommentDec 2, 2025 6:53pm

Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
@pranaygp

Copy link
Copy Markdown
Contributor

@copilot resolve merge conflicts

Comment thread.github/workflows/trigger-ci.yml Outdated
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>

CopilotAI commented Dec 2, 2025

Copy link
Copy Markdown
ContributorAuthor

@copilot resolve merge conflicts

Merge conflicts resolved in commit 0889038.

The base PR #325 was updated to extract inline GitHub Action scripts into separate files. I've:

  • Merged the latest changes from PR Enable ci for external collaborators #325
  • Applied all my timestamp removal and PR reuse changes to the new .github/scripts/create-ci-pr.js file
  • Kept the workflow file using the extracted script references

All functionality is preserved with the same 1:1 PR relationship behavior.

if (existingPR.title.startsWith('[CI Test]')) {
// Use the existing PR and add the labels
ciPR = existingPR;
isNewPR = true; // Treat as new to ensure labels are added

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.

Suggested change
isNewPR=true;// Treat as new to ensure labels are added
isNewPR=false;// This is an existing PR being reused, not a new one

When reusing an existing CI test PR without the 'ci-test' label but with the correct title, the isNewPR flag is incorrectly set to true, causing the comment to say "CI test created" instead of "CI test updated".

View Details

Analysis

Incorrect isNewPR flag causes misleading message for reused CI test PRs

What fails: When reusing an existing CI test PR that lacks the 'ci-test' label but has a title starting with '[CI Test]', the isNewPR flag is incorrectly set to true at line 54 of .github/scripts/create-ci-pr.js. This causes the user comment at line 75 to say "✅ CI test created" instead of "✅ CI test updated", which is misleading since the PR is being reused, not newly created.

How to reproduce:

  1. Trigger /run-ci on an external PR that creates a new CI test PR (branch: ci-test/{prNumber})
  2. The initial comment will correctly say "✅ CI test created"
  3. Manually remove the 'ci-test' label from the CI test PR
  4. Trigger /run-ci again on the same external PR
  5. The code will find the existing CI test PR without the label (line 31), verify it has the correct title (line 50), and reuse it (line 52)
  6. The isNewPR flag is set to true (line 54), causing the comment to incorrectly say "✅ CI test created" again

Expected: The message should say "✅ CI test updated" because the code path represents reusing an existing PR (line 52: ciPR = existingPR), not creating a new one. The labels are added automatically via the label-adding logic (lines 60-70), so setting isNewPR = true is unnecessary and incorrect.

Fix: Changed line 54 from isNewPR = true to isNewPR = false, with an updated comment clarifying that this code path represents an existing PR being reused. The label-adding logic continues to work correctly in all scenarios.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@pranaygp
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Remove timestamp from CI branch names, implement 1:1 PR relationship - #493

Draft
pranaygp with Copilot wants to merge 6 commits into
pranaygp/external-collaborator-cifrom
copilot/sub-pr-325
Draft

Remove timestamp from CI branch names, implement 1:1 PR relationship#493
pranaygp with Copilot wants to merge 6 commits into
pranaygp/external-collaborator-cifrom
copilot/sub-pr-325

Conversation

CopilotAI commented Dec 2, 2025

Copy link
Copy Markdown
Contributor
  • Remove timestamp from CI branch name to use PR number only
  • Check if CI branch already exists before creating
  • Update existing branch if it already exists (force push)
  • Check if CI PR already exists before creating
  • Update existing PR instead of creating a new one
  • Update comments to reflect reuse behavior
  • Filter CI PRs by label to avoid selecting wrong PR
  • Ensure labels are present on both new and existing PRs
  • Fix API response data structure handling
  • Handle unlabeled existing PRs gracefully with title validation
  • Add documentation for label handling logic
  • Resolve merge conflicts with base PR (script extraction)
  • Apply all changes to new create-ci-pr.js script file

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

@changeset-bot

changeset-botBot commented Dec 2, 2025

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 0889038

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercelBot commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
example-nextjs-workflow-turbopackReadyReadyPreviewCommentDec 2, 2025 6:53pm
example-nextjs-workflow-webpackReadyReadyPreviewCommentDec 2, 2025 6:53pm
example-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-astro-workflowErrorErrorDec 2, 2025 6:53pm
workbench-express-workflowErrorErrorDec 2, 2025 6:53pm
workbench-hono-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-nitro-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-nuxt-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-sveltekit-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-vite-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workflow-docsReadyReadyPreviewCommentDec 2, 2025 6:53pm

Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
@pranaygp

Copy link
Copy Markdown
Contributor

@copilot resolve merge conflicts

Comment thread.github/workflows/trigger-ci.yml Outdated
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>

CopilotAI commented Dec 2, 2025

Copy link
Copy Markdown
ContributorAuthor

@copilot resolve merge conflicts

Merge conflicts resolved in commit 0889038.

The base PR #325 was updated to extract inline GitHub Action scripts into separate files. I've:

  • Merged the latest changes from PR Enable ci for external collaborators #325
  • Applied all my timestamp removal and PR reuse changes to the new .github/scripts/create-ci-pr.js file
  • Kept the workflow file using the extracted script references

All functionality is preserved with the same 1:1 PR relationship behavior.

if (existingPR.title.startsWith('[CI Test]')) {
// Use the existing PR and add the labels
ciPR = existingPR;
isNewPR = true; // Treat as new to ensure labels are added

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.

Suggested change
isNewPR=true;// Treat as new to ensure labels are added
isNewPR=false;// This is an existing PR being reused, not a new one

When reusing an existing CI test PR without the 'ci-test' label but with the correct title, the isNewPR flag is incorrectly set to true, causing the comment to say "CI test created" instead of "CI test updated".

View Details

Analysis

Incorrect isNewPR flag causes misleading message for reused CI test PRs

What fails: When reusing an existing CI test PR that lacks the 'ci-test' label but has a title starting with '[CI Test]', the isNewPR flag is incorrectly set to true at line 54 of .github/scripts/create-ci-pr.js. This causes the user comment at line 75 to say "✅ CI test created" instead of "✅ CI test updated", which is misleading since the PR is being reused, not newly created.

How to reproduce:

  1. Trigger /run-ci on an external PR that creates a new CI test PR (branch: ci-test/{prNumber})
  2. The initial comment will correctly say "✅ CI test created"
  3. Manually remove the 'ci-test' label from the CI test PR
  4. Trigger /run-ci again on the same external PR
  5. The code will find the existing CI test PR without the label (line 31), verify it has the correct title (line 50), and reuse it (line 52)
  6. The isNewPR flag is set to true (line 54), causing the comment to incorrectly say "✅ CI test created" again

Expected: The message should say "✅ CI test updated" because the code path represents reusing an existing PR (line 52: ciPR = existingPR), not creating a new one. The labels are added automatically via the label-adding logic (lines 60-70), so setting isNewPR = true is unnecessary and incorrect.

Fix: Changed line 54 from isNewPR = true to isNewPR = false, with an updated comment clarifying that this code path represents an existing PR being reused. The label-adding logic continues to work correctly in all scenarios.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@pranaygp
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Remove timestamp from CI branch names, implement 1:1 PR relationship - #493

Draft
pranaygp with Copilot wants to merge 6 commits into
pranaygp/external-collaborator-cifrom
copilot/sub-pr-325
Draft

Remove timestamp from CI branch names, implement 1:1 PR relationship#493
pranaygp with Copilot wants to merge 6 commits into
pranaygp/external-collaborator-cifrom
copilot/sub-pr-325

Conversation

CopilotAI commented Dec 2, 2025

Copy link
Copy Markdown
Contributor
  • Remove timestamp from CI branch name to use PR number only
  • Check if CI branch already exists before creating
  • Update existing branch if it already exists (force push)
  • Check if CI PR already exists before creating
  • Update existing PR instead of creating a new one
  • Update comments to reflect reuse behavior
  • Filter CI PRs by label to avoid selecting wrong PR
  • Ensure labels are present on both new and existing PRs
  • Fix API response data structure handling
  • Handle unlabeled existing PRs gracefully with title validation
  • Add documentation for label handling logic
  • Resolve merge conflicts with base PR (script extraction)
  • Apply all changes to new create-ci-pr.js script file

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

@changeset-bot

changeset-botBot commented Dec 2, 2025

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 0889038

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercelBot commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
example-nextjs-workflow-turbopackReadyReadyPreviewCommentDec 2, 2025 6:53pm
example-nextjs-workflow-webpackReadyReadyPreviewCommentDec 2, 2025 6:53pm
example-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-astro-workflowErrorErrorDec 2, 2025 6:53pm
workbench-express-workflowErrorErrorDec 2, 2025 6:53pm
workbench-hono-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-nitro-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-nuxt-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-sveltekit-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-vite-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workflow-docsReadyReadyPreviewCommentDec 2, 2025 6:53pm

Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
@pranaygp

Copy link
Copy Markdown
Contributor

@copilot resolve merge conflicts

Comment thread.github/workflows/trigger-ci.yml Outdated
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>

CopilotAI commented Dec 2, 2025

Copy link
Copy Markdown
ContributorAuthor

@copilot resolve merge conflicts

Merge conflicts resolved in commit 0889038.

The base PR #325 was updated to extract inline GitHub Action scripts into separate files. I've:

  • Merged the latest changes from PR Enable ci for external collaborators #325
  • Applied all my timestamp removal and PR reuse changes to the new .github/scripts/create-ci-pr.js file
  • Kept the workflow file using the extracted script references

All functionality is preserved with the same 1:1 PR relationship behavior.

if (existingPR.title.startsWith('[CI Test]')) {
// Use the existing PR and add the labels
ciPR = existingPR;
isNewPR = true; // Treat as new to ensure labels are added

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.

Suggested change
isNewPR=true;// Treat as new to ensure labels are added
isNewPR=false;// This is an existing PR being reused, not a new one

When reusing an existing CI test PR without the 'ci-test' label but with the correct title, the isNewPR flag is incorrectly set to true, causing the comment to say "CI test created" instead of "CI test updated".

View Details

Analysis

Incorrect isNewPR flag causes misleading message for reused CI test PRs

What fails: When reusing an existing CI test PR that lacks the 'ci-test' label but has a title starting with '[CI Test]', the isNewPR flag is incorrectly set to true at line 54 of .github/scripts/create-ci-pr.js. This causes the user comment at line 75 to say "✅ CI test created" instead of "✅ CI test updated", which is misleading since the PR is being reused, not newly created.

How to reproduce:

  1. Trigger /run-ci on an external PR that creates a new CI test PR (branch: ci-test/{prNumber})
  2. The initial comment will correctly say "✅ CI test created"
  3. Manually remove the 'ci-test' label from the CI test PR
  4. Trigger /run-ci again on the same external PR
  5. The code will find the existing CI test PR without the label (line 31), verify it has the correct title (line 50), and reuse it (line 52)
  6. The isNewPR flag is set to true (line 54), causing the comment to incorrectly say "✅ CI test created" again

Expected: The message should say "✅ CI test updated" because the code path represents reusing an existing PR (line 52: ciPR = existingPR), not creating a new one. The labels are added automatically via the label-adding logic (lines 60-70), so setting isNewPR = true is unnecessary and incorrect.

Fix: Changed line 54 from isNewPR = true to isNewPR = false, with an updated comment clarifying that this code path represents an existing PR being reused. The label-adding logic continues to work correctly in all scenarios.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@pranaygp
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Remove timestamp from CI branch names, implement 1:1 PR relationship - #493

Draft
pranaygp with Copilot wants to merge 6 commits into
pranaygp/external-collaborator-cifrom
copilot/sub-pr-325
Draft

Remove timestamp from CI branch names, implement 1:1 PR relationship#493
pranaygp with Copilot wants to merge 6 commits into
pranaygp/external-collaborator-cifrom
copilot/sub-pr-325

Conversation

CopilotAI commented Dec 2, 2025

Copy link
Copy Markdown
Contributor
  • Remove timestamp from CI branch name to use PR number only
  • Check if CI branch already exists before creating
  • Update existing branch if it already exists (force push)
  • Check if CI PR already exists before creating
  • Update existing PR instead of creating a new one
  • Update comments to reflect reuse behavior
  • Filter CI PRs by label to avoid selecting wrong PR
  • Ensure labels are present on both new and existing PRs
  • Fix API response data structure handling
  • Handle unlabeled existing PRs gracefully with title validation
  • Add documentation for label handling logic
  • Resolve merge conflicts with base PR (script extraction)
  • Apply all changes to new create-ci-pr.js script file

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

@changeset-bot

changeset-botBot commented Dec 2, 2025

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 0889038

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercelBot commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
example-nextjs-workflow-turbopackReadyReadyPreviewCommentDec 2, 2025 6:53pm
example-nextjs-workflow-webpackReadyReadyPreviewCommentDec 2, 2025 6:53pm
example-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-astro-workflowErrorErrorDec 2, 2025 6:53pm
workbench-express-workflowErrorErrorDec 2, 2025 6:53pm
workbench-hono-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-nitro-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-nuxt-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-sveltekit-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-vite-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workflow-docsReadyReadyPreviewCommentDec 2, 2025 6:53pm

Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
@pranaygp

Copy link
Copy Markdown
Contributor

@copilot resolve merge conflicts

Comment thread.github/workflows/trigger-ci.yml Outdated
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>

CopilotAI commented Dec 2, 2025

Copy link
Copy Markdown
ContributorAuthor

@copilot resolve merge conflicts

Merge conflicts resolved in commit 0889038.

The base PR #325 was updated to extract inline GitHub Action scripts into separate files. I've:

  • Merged the latest changes from PR Enable ci for external collaborators #325
  • Applied all my timestamp removal and PR reuse changes to the new .github/scripts/create-ci-pr.js file
  • Kept the workflow file using the extracted script references

All functionality is preserved with the same 1:1 PR relationship behavior.

if (existingPR.title.startsWith('[CI Test]')) {
// Use the existing PR and add the labels
ciPR = existingPR;
isNewPR = true; // Treat as new to ensure labels are added

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.

Suggested change
isNewPR=true;// Treat as new to ensure labels are added
isNewPR=false;// This is an existing PR being reused, not a new one

When reusing an existing CI test PR without the 'ci-test' label but with the correct title, the isNewPR flag is incorrectly set to true, causing the comment to say "CI test created" instead of "CI test updated".

View Details

Analysis

Incorrect isNewPR flag causes misleading message for reused CI test PRs

What fails: When reusing an existing CI test PR that lacks the 'ci-test' label but has a title starting with '[CI Test]', the isNewPR flag is incorrectly set to true at line 54 of .github/scripts/create-ci-pr.js. This causes the user comment at line 75 to say "✅ CI test created" instead of "✅ CI test updated", which is misleading since the PR is being reused, not newly created.

How to reproduce:

  1. Trigger /run-ci on an external PR that creates a new CI test PR (branch: ci-test/{prNumber})
  2. The initial comment will correctly say "✅ CI test created"
  3. Manually remove the 'ci-test' label from the CI test PR
  4. Trigger /run-ci again on the same external PR
  5. The code will find the existing CI test PR without the label (line 31), verify it has the correct title (line 50), and reuse it (line 52)
  6. The isNewPR flag is set to true (line 54), causing the comment to incorrectly say "✅ CI test created" again

Expected: The message should say "✅ CI test updated" because the code path represents reusing an existing PR (line 52: ciPR = existingPR), not creating a new one. The labels are added automatically via the label-adding logic (lines 60-70), so setting isNewPR = true is unnecessary and incorrect.

Fix: Changed line 54 from isNewPR = true to isNewPR = false, with an updated comment clarifying that this code path represents an existing PR being reused. The label-adding logic continues to work correctly in all scenarios.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@pranaygp
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Remove timestamp from CI branch names, implement 1:1 PR relationship - #493

Draft
pranaygp with Copilot wants to merge 6 commits into
pranaygp/external-collaborator-cifrom
copilot/sub-pr-325
Draft

Remove timestamp from CI branch names, implement 1:1 PR relationship#493
pranaygp with Copilot wants to merge 6 commits into
pranaygp/external-collaborator-cifrom
copilot/sub-pr-325

Conversation

CopilotAI commented Dec 2, 2025

Copy link
Copy Markdown
Contributor
  • Remove timestamp from CI branch name to use PR number only
  • Check if CI branch already exists before creating
  • Update existing branch if it already exists (force push)
  • Check if CI PR already exists before creating
  • Update existing PR instead of creating a new one
  • Update comments to reflect reuse behavior
  • Filter CI PRs by label to avoid selecting wrong PR
  • Ensure labels are present on both new and existing PRs
  • Fix API response data structure handling
  • Handle unlabeled existing PRs gracefully with title validation
  • Add documentation for label handling logic
  • Resolve merge conflicts with base PR (script extraction)
  • Apply all changes to new create-ci-pr.js script file

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

@changeset-bot

changeset-botBot commented Dec 2, 2025

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 0889038

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercelBot commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
example-nextjs-workflow-turbopackReadyReadyPreviewCommentDec 2, 2025 6:53pm
example-nextjs-workflow-webpackReadyReadyPreviewCommentDec 2, 2025 6:53pm
example-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-astro-workflowErrorErrorDec 2, 2025 6:53pm
workbench-express-workflowErrorErrorDec 2, 2025 6:53pm
workbench-hono-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-nitro-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-nuxt-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-sveltekit-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workbench-vite-workflowReadyReadyPreviewCommentDec 2, 2025 6:53pm
workflow-docsReadyReadyPreviewCommentDec 2, 2025 6:53pm

Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
@pranaygp

Copy link
Copy Markdown
Contributor

@copilot resolve merge conflicts

Comment thread.github/workflows/trigger-ci.yml Outdated
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>

CopilotAI commented Dec 2, 2025

Copy link
Copy Markdown
ContributorAuthor

@copilot resolve merge conflicts

Merge conflicts resolved in commit 0889038.

The base PR #325 was updated to extract inline GitHub Action scripts into separate files. I've:

  • Merged the latest changes from PR Enable ci for external collaborators #325
  • Applied all my timestamp removal and PR reuse changes to the new .github/scripts/create-ci-pr.js file
  • Kept the workflow file using the extracted script references

All functionality is preserved with the same 1:1 PR relationship behavior.

if (existingPR.title.startsWith('[CI Test]')) {
// Use the existing PR and add the labels
ciPR = existingPR;
isNewPR = true; // Treat as new to ensure labels are added

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.

Suggested change
isNewPR=true;// Treat as new to ensure labels are added
isNewPR=false;// This is an existing PR being reused, not a new one

When reusing an existing CI test PR without the 'ci-test' label but with the correct title, the isNewPR flag is incorrectly set to true, causing the comment to say "CI test created" instead of "CI test updated".

View Details

Analysis

Incorrect isNewPR flag causes misleading message for reused CI test PRs

What fails: When reusing an existing CI test PR that lacks the 'ci-test' label but has a title starting with '[CI Test]', the isNewPR flag is incorrectly set to true at line 54 of .github/scripts/create-ci-pr.js. This causes the user comment at line 75 to say "✅ CI test created" instead of "✅ CI test updated", which is misleading since the PR is being reused, not newly created.

How to reproduce:

  1. Trigger /run-ci on an external PR that creates a new CI test PR (branch: ci-test/{prNumber})
  2. The initial comment will correctly say "✅ CI test created"
  3. Manually remove the 'ci-test' label from the CI test PR
  4. Trigger /run-ci again on the same external PR
  5. The code will find the existing CI test PR without the label (line 31), verify it has the correct title (line 50), and reuse it (line 52)
  6. The isNewPR flag is set to true (line 54), causing the comment to incorrectly say "✅ CI test created" again

Expected: The message should say "✅ CI test updated" because the code path represents reusing an existing PR (line 52: ciPR = existingPR), not creating a new one. The labels are added automatically via the label-adding logic (lines 60-70), so setting isNewPR = true is unnecessary and incorrect.

Fix: Changed line 54 from isNewPR = true to isNewPR = false, with an updated comment clarifying that this code path represents an existing PR being reused. The label-adding logic continues to work correctly in all scenarios.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@pranaygp