Add a fallback when fork tokens cannot post comments - #104

Open
Pybsama wants to merge 2 commits into
github:mainfrom
Pybsama:codex/fallback-when-comment-forbidden
Open

Add a fallback when fork tokens cannot post comments#104
Pybsama wants to merge 2 commits into
github:mainfrom
Pybsama:codex/fallback-when-comment-forbidden

Conversation

@Pybsama

Copy link
Copy Markdown

Summary

  • catch the known Resource not accessible by integration error when a fork workflow token cannot create or update a comment
  • emit a GitHub warning and log the complete comment that would have been posted
  • add the same message to the Actions Job Summary when it is available
  • preserve the original exit code and stderr for every other command failure
  • route all seven PR, Issue, and Discussion create/update paths through the fallback
  • make top-level Discussion comments use the helper's explicit ID and message arguments

Fixes#44.

Testing

  • added Bash subprocess tests for success, the known fork permission error, unexpected failures, multiline argument preservation, and top-level Discussion parameters
  • confirmed the fallback tests fail against the previous implementation before the helper exists
  • npm ci && npm test — 10 tests passed
  • focused test file repeated 20 times
  • bash -n queries.sh
  • parsed action.yml with js-yaml
  • git diff --check

@Pybsama

Copy link
Copy Markdown
Author

Fresh current-main validation update:

  • PR head 8645d27afd80b2bc471de85bc57826d81a436d9c is ahead 1 / behind 8 relative to current main9984e213ae846b8c2342d393085e2483a615f8db. The eight upstream commits only change package.json and package-lock.json; a merge-tree simulation is conflict-free and produces tree f9a1824e1b5a53074f9fbf1000043784db8bb162.
  • On that exact merge-equivalent tree, lockfile installation and the complete Vitest suite passed 10/10 on Node 24.11.1 and Node 20.19.5. The Node 24 suite also passed 20 consecutive full-suite repetitions.
  • bash -n queries.sh passed. action.yml, the CI workflow, and the self-test workflow all parse with the current pinned js-yaml. Target-file and staged diff checks pass.
  • No equivalent implementation is present on current main or in another PR.
  • The existing CI and Test Accessibility-alt-text-bot runs are both action_required with zero jobs, so they are waiting for maintainer approval rather than reporting test failures.
  • Prior independent review found no remaining blocking issue. The original head remains mergeable, so I have not rewritten it solely for dependency-only drift. Ready for review.

@Pybsama
Pybsama marked this pull request as ready for review August 29, 2026 06:53
@Pybsama
Pybsama requested a review from a team as a code ownerAugust 29, 2026 06:53
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.

🐛 Bug: No fallback behavior for action runs on forks

2 participants

@Pybsama@JoyceZhu
, '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

Add a fallback when fork tokens cannot post comments - #104

Open
Pybsama wants to merge 2 commits into
github:mainfrom
Pybsama:codex/fallback-when-comment-forbidden
Open

Add a fallback when fork tokens cannot post comments#104
Pybsama wants to merge 2 commits into
github:mainfrom
Pybsama:codex/fallback-when-comment-forbidden

Conversation

@Pybsama

Copy link
Copy Markdown

Summary

  • catch the known Resource not accessible by integration error when a fork workflow token cannot create or update a comment
  • emit a GitHub warning and log the complete comment that would have been posted
  • add the same message to the Actions Job Summary when it is available
  • preserve the original exit code and stderr for every other command failure
  • route all seven PR, Issue, and Discussion create/update paths through the fallback
  • make top-level Discussion comments use the helper's explicit ID and message arguments

Fixes#44.

Testing

  • added Bash subprocess tests for success, the known fork permission error, unexpected failures, multiline argument preservation, and top-level Discussion parameters
  • confirmed the fallback tests fail against the previous implementation before the helper exists
  • npm ci && npm test — 10 tests passed
  • focused test file repeated 20 times
  • bash -n queries.sh
  • parsed action.yml with js-yaml
  • git diff --check

@Pybsama

Copy link
Copy Markdown
Author

Fresh current-main validation update:

  • PR head 8645d27afd80b2bc471de85bc57826d81a436d9c is ahead 1 / behind 8 relative to current main9984e213ae846b8c2342d393085e2483a615f8db. The eight upstream commits only change package.json and package-lock.json; a merge-tree simulation is conflict-free and produces tree f9a1824e1b5a53074f9fbf1000043784db8bb162.
  • On that exact merge-equivalent tree, lockfile installation and the complete Vitest suite passed 10/10 on Node 24.11.1 and Node 20.19.5. The Node 24 suite also passed 20 consecutive full-suite repetitions.
  • bash -n queries.sh passed. action.yml, the CI workflow, and the self-test workflow all parse with the current pinned js-yaml. Target-file and staged diff checks pass.
  • No equivalent implementation is present on current main or in another PR.
  • The existing CI and Test Accessibility-alt-text-bot runs are both action_required with zero jobs, so they are waiting for maintainer approval rather than reporting test failures.
  • Prior independent review found no remaining blocking issue. The original head remains mergeable, so I have not rewritten it solely for dependency-only drift. Ready for review.

@Pybsama
Pybsama marked this pull request as ready for review August 29, 2026 06:53
@Pybsama
Pybsama requested a review from a team as a code ownerAugust 29, 2026 06:53
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.

🐛 Bug: No fallback behavior for action runs on forks

2 participants

@Pybsama@JoyceZhu
, '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

Add a fallback when fork tokens cannot post comments - #104

Open
Pybsama wants to merge 2 commits into
github:mainfrom
Pybsama:codex/fallback-when-comment-forbidden
Open

Add a fallback when fork tokens cannot post comments#104
Pybsama wants to merge 2 commits into
github:mainfrom
Pybsama:codex/fallback-when-comment-forbidden

Conversation

@Pybsama

Copy link
Copy Markdown

Summary

  • catch the known Resource not accessible by integration error when a fork workflow token cannot create or update a comment
  • emit a GitHub warning and log the complete comment that would have been posted
  • add the same message to the Actions Job Summary when it is available
  • preserve the original exit code and stderr for every other command failure
  • route all seven PR, Issue, and Discussion create/update paths through the fallback
  • make top-level Discussion comments use the helper's explicit ID and message arguments

Fixes#44.

Testing

  • added Bash subprocess tests for success, the known fork permission error, unexpected failures, multiline argument preservation, and top-level Discussion parameters
  • confirmed the fallback tests fail against the previous implementation before the helper exists
  • npm ci && npm test — 10 tests passed
  • focused test file repeated 20 times
  • bash -n queries.sh
  • parsed action.yml with js-yaml
  • git diff --check

@Pybsama

Copy link
Copy Markdown
Author

Fresh current-main validation update:

  • PR head 8645d27afd80b2bc471de85bc57826d81a436d9c is ahead 1 / behind 8 relative to current main9984e213ae846b8c2342d393085e2483a615f8db. The eight upstream commits only change package.json and package-lock.json; a merge-tree simulation is conflict-free and produces tree f9a1824e1b5a53074f9fbf1000043784db8bb162.
  • On that exact merge-equivalent tree, lockfile installation and the complete Vitest suite passed 10/10 on Node 24.11.1 and Node 20.19.5. The Node 24 suite also passed 20 consecutive full-suite repetitions.
  • bash -n queries.sh passed. action.yml, the CI workflow, and the self-test workflow all parse with the current pinned js-yaml. Target-file and staged diff checks pass.
  • No equivalent implementation is present on current main or in another PR.
  • The existing CI and Test Accessibility-alt-text-bot runs are both action_required with zero jobs, so they are waiting for maintainer approval rather than reporting test failures.
  • Prior independent review found no remaining blocking issue. The original head remains mergeable, so I have not rewritten it solely for dependency-only drift. Ready for review.

@Pybsama
Pybsama marked this pull request as ready for review August 29, 2026 06:53
@Pybsama
Pybsama requested a review from a team as a code ownerAugust 29, 2026 06:53
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.

🐛 Bug: No fallback behavior for action runs on forks

2 participants

@Pybsama@JoyceZhu
, '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

Add a fallback when fork tokens cannot post comments - #104

Open
Pybsama wants to merge 2 commits into
github:mainfrom
Pybsama:codex/fallback-when-comment-forbidden
Open

Add a fallback when fork tokens cannot post comments#104
Pybsama wants to merge 2 commits into
github:mainfrom
Pybsama:codex/fallback-when-comment-forbidden

Conversation

@Pybsama

Copy link
Copy Markdown

Summary

  • catch the known Resource not accessible by integration error when a fork workflow token cannot create or update a comment
  • emit a GitHub warning and log the complete comment that would have been posted
  • add the same message to the Actions Job Summary when it is available
  • preserve the original exit code and stderr for every other command failure
  • route all seven PR, Issue, and Discussion create/update paths through the fallback
  • make top-level Discussion comments use the helper's explicit ID and message arguments

Fixes#44.

Testing

  • added Bash subprocess tests for success, the known fork permission error, unexpected failures, multiline argument preservation, and top-level Discussion parameters
  • confirmed the fallback tests fail against the previous implementation before the helper exists
  • npm ci && npm test — 10 tests passed
  • focused test file repeated 20 times
  • bash -n queries.sh
  • parsed action.yml with js-yaml
  • git diff --check

@Pybsama

Copy link
Copy Markdown
Author

Fresh current-main validation update:

  • PR head 8645d27afd80b2bc471de85bc57826d81a436d9c is ahead 1 / behind 8 relative to current main9984e213ae846b8c2342d393085e2483a615f8db. The eight upstream commits only change package.json and package-lock.json; a merge-tree simulation is conflict-free and produces tree f9a1824e1b5a53074f9fbf1000043784db8bb162.
  • On that exact merge-equivalent tree, lockfile installation and the complete Vitest suite passed 10/10 on Node 24.11.1 and Node 20.19.5. The Node 24 suite also passed 20 consecutive full-suite repetitions.
  • bash -n queries.sh passed. action.yml, the CI workflow, and the self-test workflow all parse with the current pinned js-yaml. Target-file and staged diff checks pass.
  • No equivalent implementation is present on current main or in another PR.
  • The existing CI and Test Accessibility-alt-text-bot runs are both action_required with zero jobs, so they are waiting for maintainer approval rather than reporting test failures.
  • Prior independent review found no remaining blocking issue. The original head remains mergeable, so I have not rewritten it solely for dependency-only drift. Ready for review.

@Pybsama
Pybsama marked this pull request as ready for review August 29, 2026 06:53
@Pybsama
Pybsama requested a review from a team as a code ownerAugust 29, 2026 06:53
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.

🐛 Bug: No fallback behavior for action runs on forks

2 participants

@Pybsama@JoyceZhu
, '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

Add a fallback when fork tokens cannot post comments - #104

Open
Pybsama wants to merge 2 commits into
github:mainfrom
Pybsama:codex/fallback-when-comment-forbidden
Open

Add a fallback when fork tokens cannot post comments#104
Pybsama wants to merge 2 commits into
github:mainfrom
Pybsama:codex/fallback-when-comment-forbidden

Conversation

@Pybsama

Copy link
Copy Markdown

Summary

  • catch the known Resource not accessible by integration error when a fork workflow token cannot create or update a comment
  • emit a GitHub warning and log the complete comment that would have been posted
  • add the same message to the Actions Job Summary when it is available
  • preserve the original exit code and stderr for every other command failure
  • route all seven PR, Issue, and Discussion create/update paths through the fallback
  • make top-level Discussion comments use the helper's explicit ID and message arguments

Fixes#44.

Testing

  • added Bash subprocess tests for success, the known fork permission error, unexpected failures, multiline argument preservation, and top-level Discussion parameters
  • confirmed the fallback tests fail against the previous implementation before the helper exists
  • npm ci && npm test — 10 tests passed
  • focused test file repeated 20 times
  • bash -n queries.sh
  • parsed action.yml with js-yaml
  • git diff --check

@Pybsama

Copy link
Copy Markdown
Author

Fresh current-main validation update:

  • PR head 8645d27afd80b2bc471de85bc57826d81a436d9c is ahead 1 / behind 8 relative to current main9984e213ae846b8c2342d393085e2483a615f8db. The eight upstream commits only change package.json and package-lock.json; a merge-tree simulation is conflict-free and produces tree f9a1824e1b5a53074f9fbf1000043784db8bb162.
  • On that exact merge-equivalent tree, lockfile installation and the complete Vitest suite passed 10/10 on Node 24.11.1 and Node 20.19.5. The Node 24 suite also passed 20 consecutive full-suite repetitions.
  • bash -n queries.sh passed. action.yml, the CI workflow, and the self-test workflow all parse with the current pinned js-yaml. Target-file and staged diff checks pass.
  • No equivalent implementation is present on current main or in another PR.
  • The existing CI and Test Accessibility-alt-text-bot runs are both action_required with zero jobs, so they are waiting for maintainer approval rather than reporting test failures.
  • Prior independent review found no remaining blocking issue. The original head remains mergeable, so I have not rewritten it solely for dependency-only drift. Ready for review.

@Pybsama
Pybsama marked this pull request as ready for review August 29, 2026 06:53
@Pybsama
Pybsama requested a review from a team as a code ownerAugust 29, 2026 06:53
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.

🐛 Bug: No fallback behavior for action runs on forks

2 participants

@Pybsama@JoyceZhu
, '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

Add a fallback when fork tokens cannot post comments - #104

Open
Pybsama wants to merge 2 commits into
github:mainfrom
Pybsama:codex/fallback-when-comment-forbidden
Open

Add a fallback when fork tokens cannot post comments#104
Pybsama wants to merge 2 commits into
github:mainfrom
Pybsama:codex/fallback-when-comment-forbidden

Conversation

@Pybsama

Copy link
Copy Markdown

Summary

  • catch the known Resource not accessible by integration error when a fork workflow token cannot create or update a comment
  • emit a GitHub warning and log the complete comment that would have been posted
  • add the same message to the Actions Job Summary when it is available
  • preserve the original exit code and stderr for every other command failure
  • route all seven PR, Issue, and Discussion create/update paths through the fallback
  • make top-level Discussion comments use the helper's explicit ID and message arguments

Fixes#44.

Testing

  • added Bash subprocess tests for success, the known fork permission error, unexpected failures, multiline argument preservation, and top-level Discussion parameters
  • confirmed the fallback tests fail against the previous implementation before the helper exists
  • npm ci && npm test — 10 tests passed
  • focused test file repeated 20 times
  • bash -n queries.sh
  • parsed action.yml with js-yaml
  • git diff --check

@Pybsama

Copy link
Copy Markdown
Author

Fresh current-main validation update:

  • PR head 8645d27afd80b2bc471de85bc57826d81a436d9c is ahead 1 / behind 8 relative to current main9984e213ae846b8c2342d393085e2483a615f8db. The eight upstream commits only change package.json and package-lock.json; a merge-tree simulation is conflict-free and produces tree f9a1824e1b5a53074f9fbf1000043784db8bb162.
  • On that exact merge-equivalent tree, lockfile installation and the complete Vitest suite passed 10/10 on Node 24.11.1 and Node 20.19.5. The Node 24 suite also passed 20 consecutive full-suite repetitions.
  • bash -n queries.sh passed. action.yml, the CI workflow, and the self-test workflow all parse with the current pinned js-yaml. Target-file and staged diff checks pass.
  • No equivalent implementation is present on current main or in another PR.
  • The existing CI and Test Accessibility-alt-text-bot runs are both action_required with zero jobs, so they are waiting for maintainer approval rather than reporting test failures.
  • Prior independent review found no remaining blocking issue. The original head remains mergeable, so I have not rewritten it solely for dependency-only drift. Ready for review.

@Pybsama
Pybsama marked this pull request as ready for review August 29, 2026 06:53
@Pybsama
Pybsama requested a review from a team as a code ownerAugust 29, 2026 06:53
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.

🐛 Bug: No fallback behavior for action runs on forks

2 participants

@Pybsama@JoyceZhu
, '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

Add a fallback when fork tokens cannot post comments - #104

Open
Pybsama wants to merge 2 commits into
github:mainfrom
Pybsama:codex/fallback-when-comment-forbidden
Open

Add a fallback when fork tokens cannot post comments#104
Pybsama wants to merge 2 commits into
github:mainfrom
Pybsama:codex/fallback-when-comment-forbidden

Conversation

@Pybsama

Copy link
Copy Markdown

Summary

  • catch the known Resource not accessible by integration error when a fork workflow token cannot create or update a comment
  • emit a GitHub warning and log the complete comment that would have been posted
  • add the same message to the Actions Job Summary when it is available
  • preserve the original exit code and stderr for every other command failure
  • route all seven PR, Issue, and Discussion create/update paths through the fallback
  • make top-level Discussion comments use the helper's explicit ID and message arguments

Fixes#44.

Testing

  • added Bash subprocess tests for success, the known fork permission error, unexpected failures, multiline argument preservation, and top-level Discussion parameters
  • confirmed the fallback tests fail against the previous implementation before the helper exists
  • npm ci && npm test — 10 tests passed
  • focused test file repeated 20 times
  • bash -n queries.sh
  • parsed action.yml with js-yaml
  • git diff --check

@Pybsama

Copy link
Copy Markdown
Author

Fresh current-main validation update:

  • PR head 8645d27afd80b2bc471de85bc57826d81a436d9c is ahead 1 / behind 8 relative to current main9984e213ae846b8c2342d393085e2483a615f8db. The eight upstream commits only change package.json and package-lock.json; a merge-tree simulation is conflict-free and produces tree f9a1824e1b5a53074f9fbf1000043784db8bb162.
  • On that exact merge-equivalent tree, lockfile installation and the complete Vitest suite passed 10/10 on Node 24.11.1 and Node 20.19.5. The Node 24 suite also passed 20 consecutive full-suite repetitions.
  • bash -n queries.sh passed. action.yml, the CI workflow, and the self-test workflow all parse with the current pinned js-yaml. Target-file and staged diff checks pass.
  • No equivalent implementation is present on current main or in another PR.
  • The existing CI and Test Accessibility-alt-text-bot runs are both action_required with zero jobs, so they are waiting for maintainer approval rather than reporting test failures.
  • Prior independent review found no remaining blocking issue. The original head remains mergeable, so I have not rewritten it solely for dependency-only drift. Ready for review.

@Pybsama
Pybsama marked this pull request as ready for review August 29, 2026 06:53
@Pybsama
Pybsama requested a review from a team as a code ownerAugust 29, 2026 06:53
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.

🐛 Bug: No fallback behavior for action runs on forks

2 participants

@Pybsama@JoyceZhu
, '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

Add a fallback when fork tokens cannot post comments - #104

Open
Pybsama wants to merge 2 commits into
github:mainfrom
Pybsama:codex/fallback-when-comment-forbidden
Open

Add a fallback when fork tokens cannot post comments#104
Pybsama wants to merge 2 commits into
github:mainfrom
Pybsama:codex/fallback-when-comment-forbidden

Conversation

@Pybsama

Copy link
Copy Markdown

Summary

  • catch the known Resource not accessible by integration error when a fork workflow token cannot create or update a comment
  • emit a GitHub warning and log the complete comment that would have been posted
  • add the same message to the Actions Job Summary when it is available
  • preserve the original exit code and stderr for every other command failure
  • route all seven PR, Issue, and Discussion create/update paths through the fallback
  • make top-level Discussion comments use the helper's explicit ID and message arguments

Fixes#44.

Testing

  • added Bash subprocess tests for success, the known fork permission error, unexpected failures, multiline argument preservation, and top-level Discussion parameters
  • confirmed the fallback tests fail against the previous implementation before the helper exists
  • npm ci && npm test — 10 tests passed
  • focused test file repeated 20 times
  • bash -n queries.sh
  • parsed action.yml with js-yaml
  • git diff --check

@Pybsama

Copy link
Copy Markdown
Author

Fresh current-main validation update:

  • PR head 8645d27afd80b2bc471de85bc57826d81a436d9c is ahead 1 / behind 8 relative to current main9984e213ae846b8c2342d393085e2483a615f8db. The eight upstream commits only change package.json and package-lock.json; a merge-tree simulation is conflict-free and produces tree f9a1824e1b5a53074f9fbf1000043784db8bb162.
  • On that exact merge-equivalent tree, lockfile installation and the complete Vitest suite passed 10/10 on Node 24.11.1 and Node 20.19.5. The Node 24 suite also passed 20 consecutive full-suite repetitions.
  • bash -n queries.sh passed. action.yml, the CI workflow, and the self-test workflow all parse with the current pinned js-yaml. Target-file and staged diff checks pass.
  • No equivalent implementation is present on current main or in another PR.
  • The existing CI and Test Accessibility-alt-text-bot runs are both action_required with zero jobs, so they are waiting for maintainer approval rather than reporting test failures.
  • Prior independent review found no remaining blocking issue. The original head remains mergeable, so I have not rewritten it solely for dependency-only drift. Ready for review.

@Pybsama
Pybsama marked this pull request as ready for review August 29, 2026 06:53
@Pybsama
Pybsama requested a review from a team as a code ownerAugust 29, 2026 06:53
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.

🐛 Bug: No fallback behavior for action runs on forks

2 participants

@Pybsama@JoyceZhu