fix(server): use Bitbucket workspace permissions endpoint - #9035

Open
OliStarCooke wants to merge 1 commit into
pingdotgg:mainfrom
OliStarCooke:fix/bitbucket-workspace-permissions
Open

fix(server): use Bitbucket workspace permissions endpoint#9035
OliStarCooke wants to merge 1 commit into
pingdotgg:mainfrom
OliStarCooke:fix/bitbucket-workspace-permissions

Conversation

@OliStarCooke

@OliStarCookeOliStarCooke commented Sep 1, 2026

Copy link
Copy Markdown

What Changed

Bitbucket pull request permission checks now use the supported, workspace-scoped endpoint:

GET /2.0/user/workspaces/{workspace}/permissions/repositories

The server still filters the response to the requested repository and decodes the same effective admin, write, or read permission. The old HTTP 410 fallback was removed with the retired endpoint.

A regression test makes any request to the old endpoint fail with HTTP 404 and verifies that the supported endpoint succeeds. The existing authentication-failure coverage remains in place.

Why

Before every pull request write, PullRequestService asks the provider for the viewer's permissions. T3 Code used Bitbucket's removed /user/permissions/repositories endpoint for that preflight. Some Bitbucket accounts now receive HTTP 404 from the endpoint, so getViewerPermissions failed and the server never sent the requested comment.

The replacement endpoint reports the authenticated caller's effective repository permissions and accepts the existing read:repository:bitbucket API-token scope. Using it fixes the preflight without hiding real HTTP 401, HTTP 403, network, or response-decoding failures.

Closes#9034

Verification

  • vp test run apps/server/src/pullRequest/BitbucketPullRequestApi.test.ts apps/server/src/pullRequest/BitbucketPullRequestProvider.test.ts — 47 tests passed
  • Targeted formatting check passed
  • Targeted lint passed
  • Server typecheck passed; it reports only existing suggestions in unrelated files
  • git diff --check passed

This was not tested by posting a comment to a live Bitbucket Cloud pull request.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • UI screenshots are not applicable because this is a server-only change
  • A video is not applicable because this does not change motion or interaction

Authored with gpt-5.6-sol via the Codex harness in T3 Code.


Note

Medium Risk
Touches preflight permission checks before Bitbucket PR writes; wrong endpoint or decoding could block comments/merges, though scope is limited to Bitbucket integration code with updated tests.

Overview
Bitbucket repository permission preflight now calls GET /user/workspaces/{workspace}/permissions/repositories instead of the retired /user/permissions/repositories route, using the workspace parsed from workspace/slug while keeping the same repository.full_name filter and permission decoding.

The HTTP 410 “endpoint removed” workaround is gone: getRepositoryPermission no longer treats a deprecated-endpoint response as “permission unknown → allow” and instead surfaces real API outcomes (e.g. 401 still fails the read).

Tests were updated to assert the new URL, exercise success via the workspace endpoint when other URLs would 404, and rename the auth-failure case accordingly.

Reviewed by Cursor Bugbot for commit da055cd. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Switch BitbucketPullRequestApi.getRepositoryPermission to workspace permissions endpoint

Replaces the deprecated /user/permissions/repositories call with /user/workspaces/{workspace}/permissions/repositories (workspace URL-encoded). The filter query and escaping behavior are unchanged.

  • Removes the isRepositoryPermissionRemovedError helper and its special-case catch that treated an HTTP 410 from the old endpoint as an implicit grant.
  • Updates tests to expect the new workspace-scoped URL and verifies that 401 failures still propagate as failures.
  • Risk: errors from the new endpoint now propagate normally instead of a 410 being converted to true; callers of getRepositoryPermission that relied on the old 410-as-success behavior in BitbucketPullRequestApi.ts will see different results when the endpoint returns 410.

Macroscope summarized da055cd.

Replace the removed user-wide permissions preflight with Bitbucket's supported workspace-scoped endpoint so pull request writes are not blocked by HTTP 404.\n\nCloses pingdotgg#9034
@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 1, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This focused server fix replaces a retired Bitbucket permissions endpoint and changes the permission preflight used for pull-request write capabilities. Because it modifies production access-control behavior, human review is warranted despite the small, tested diff.

You can add or adjust custom eligibility rules. Learn more.

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

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Bitbucket PR comments fail because permission preflight returns HTTP 404

1 participant

@OliStarCooke
, '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

fix(server): use Bitbucket workspace permissions endpoint - #9035

Open
OliStarCooke wants to merge 1 commit into
pingdotgg:mainfrom
OliStarCooke:fix/bitbucket-workspace-permissions
Open

fix(server): use Bitbucket workspace permissions endpoint#9035
OliStarCooke wants to merge 1 commit into
pingdotgg:mainfrom
OliStarCooke:fix/bitbucket-workspace-permissions

Conversation

@OliStarCooke

@OliStarCookeOliStarCooke commented Sep 1, 2026

Copy link
Copy Markdown

What Changed

Bitbucket pull request permission checks now use the supported, workspace-scoped endpoint:

GET /2.0/user/workspaces/{workspace}/permissions/repositories

The server still filters the response to the requested repository and decodes the same effective admin, write, or read permission. The old HTTP 410 fallback was removed with the retired endpoint.

A regression test makes any request to the old endpoint fail with HTTP 404 and verifies that the supported endpoint succeeds. The existing authentication-failure coverage remains in place.

Why

Before every pull request write, PullRequestService asks the provider for the viewer's permissions. T3 Code used Bitbucket's removed /user/permissions/repositories endpoint for that preflight. Some Bitbucket accounts now receive HTTP 404 from the endpoint, so getViewerPermissions failed and the server never sent the requested comment.

The replacement endpoint reports the authenticated caller's effective repository permissions and accepts the existing read:repository:bitbucket API-token scope. Using it fixes the preflight without hiding real HTTP 401, HTTP 403, network, or response-decoding failures.

Closes#9034

Verification

  • vp test run apps/server/src/pullRequest/BitbucketPullRequestApi.test.ts apps/server/src/pullRequest/BitbucketPullRequestProvider.test.ts — 47 tests passed
  • Targeted formatting check passed
  • Targeted lint passed
  • Server typecheck passed; it reports only existing suggestions in unrelated files
  • git diff --check passed

This was not tested by posting a comment to a live Bitbucket Cloud pull request.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • UI screenshots are not applicable because this is a server-only change
  • A video is not applicable because this does not change motion or interaction

Authored with gpt-5.6-sol via the Codex harness in T3 Code.


Note

Medium Risk
Touches preflight permission checks before Bitbucket PR writes; wrong endpoint or decoding could block comments/merges, though scope is limited to Bitbucket integration code with updated tests.

Overview
Bitbucket repository permission preflight now calls GET /user/workspaces/{workspace}/permissions/repositories instead of the retired /user/permissions/repositories route, using the workspace parsed from workspace/slug while keeping the same repository.full_name filter and permission decoding.

The HTTP 410 “endpoint removed” workaround is gone: getRepositoryPermission no longer treats a deprecated-endpoint response as “permission unknown → allow” and instead surfaces real API outcomes (e.g. 401 still fails the read).

Tests were updated to assert the new URL, exercise success via the workspace endpoint when other URLs would 404, and rename the auth-failure case accordingly.

Reviewed by Cursor Bugbot for commit da055cd. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Switch BitbucketPullRequestApi.getRepositoryPermission to workspace permissions endpoint

Replaces the deprecated /user/permissions/repositories call with /user/workspaces/{workspace}/permissions/repositories (workspace URL-encoded). The filter query and escaping behavior are unchanged.

  • Removes the isRepositoryPermissionRemovedError helper and its special-case catch that treated an HTTP 410 from the old endpoint as an implicit grant.
  • Updates tests to expect the new workspace-scoped URL and verifies that 401 failures still propagate as failures.
  • Risk: errors from the new endpoint now propagate normally instead of a 410 being converted to true; callers of getRepositoryPermission that relied on the old 410-as-success behavior in BitbucketPullRequestApi.ts will see different results when the endpoint returns 410.

Macroscope summarized da055cd.

Replace the removed user-wide permissions preflight with Bitbucket's supported workspace-scoped endpoint so pull request writes are not blocked by HTTP 404.\n\nCloses pingdotgg#9034
@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 1, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This focused server fix replaces a retired Bitbucket permissions endpoint and changes the permission preflight used for pull-request write capabilities. Because it modifies production access-control behavior, human review is warranted despite the small, tested diff.

You can add or adjust custom eligibility rules. Learn more.

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

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Bitbucket PR comments fail because permission preflight returns HTTP 404

1 participant

@OliStarCooke
, '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

fix(server): use Bitbucket workspace permissions endpoint - #9035

Open
OliStarCooke wants to merge 1 commit into
pingdotgg:mainfrom
OliStarCooke:fix/bitbucket-workspace-permissions
Open

fix(server): use Bitbucket workspace permissions endpoint#9035
OliStarCooke wants to merge 1 commit into
pingdotgg:mainfrom
OliStarCooke:fix/bitbucket-workspace-permissions

Conversation

@OliStarCooke

@OliStarCookeOliStarCooke commented Sep 1, 2026

Copy link
Copy Markdown

What Changed

Bitbucket pull request permission checks now use the supported, workspace-scoped endpoint:

GET /2.0/user/workspaces/{workspace}/permissions/repositories

The server still filters the response to the requested repository and decodes the same effective admin, write, or read permission. The old HTTP 410 fallback was removed with the retired endpoint.

A regression test makes any request to the old endpoint fail with HTTP 404 and verifies that the supported endpoint succeeds. The existing authentication-failure coverage remains in place.

Why

Before every pull request write, PullRequestService asks the provider for the viewer's permissions. T3 Code used Bitbucket's removed /user/permissions/repositories endpoint for that preflight. Some Bitbucket accounts now receive HTTP 404 from the endpoint, so getViewerPermissions failed and the server never sent the requested comment.

The replacement endpoint reports the authenticated caller's effective repository permissions and accepts the existing read:repository:bitbucket API-token scope. Using it fixes the preflight without hiding real HTTP 401, HTTP 403, network, or response-decoding failures.

Closes#9034

Verification

  • vp test run apps/server/src/pullRequest/BitbucketPullRequestApi.test.ts apps/server/src/pullRequest/BitbucketPullRequestProvider.test.ts — 47 tests passed
  • Targeted formatting check passed
  • Targeted lint passed
  • Server typecheck passed; it reports only existing suggestions in unrelated files
  • git diff --check passed

This was not tested by posting a comment to a live Bitbucket Cloud pull request.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • UI screenshots are not applicable because this is a server-only change
  • A video is not applicable because this does not change motion or interaction

Authored with gpt-5.6-sol via the Codex harness in T3 Code.


Note

Medium Risk
Touches preflight permission checks before Bitbucket PR writes; wrong endpoint or decoding could block comments/merges, though scope is limited to Bitbucket integration code with updated tests.

Overview
Bitbucket repository permission preflight now calls GET /user/workspaces/{workspace}/permissions/repositories instead of the retired /user/permissions/repositories route, using the workspace parsed from workspace/slug while keeping the same repository.full_name filter and permission decoding.

The HTTP 410 “endpoint removed” workaround is gone: getRepositoryPermission no longer treats a deprecated-endpoint response as “permission unknown → allow” and instead surfaces real API outcomes (e.g. 401 still fails the read).

Tests were updated to assert the new URL, exercise success via the workspace endpoint when other URLs would 404, and rename the auth-failure case accordingly.

Reviewed by Cursor Bugbot for commit da055cd. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Switch BitbucketPullRequestApi.getRepositoryPermission to workspace permissions endpoint

Replaces the deprecated /user/permissions/repositories call with /user/workspaces/{workspace}/permissions/repositories (workspace URL-encoded). The filter query and escaping behavior are unchanged.

  • Removes the isRepositoryPermissionRemovedError helper and its special-case catch that treated an HTTP 410 from the old endpoint as an implicit grant.
  • Updates tests to expect the new workspace-scoped URL and verifies that 401 failures still propagate as failures.
  • Risk: errors from the new endpoint now propagate normally instead of a 410 being converted to true; callers of getRepositoryPermission that relied on the old 410-as-success behavior in BitbucketPullRequestApi.ts will see different results when the endpoint returns 410.

Macroscope summarized da055cd.

Replace the removed user-wide permissions preflight with Bitbucket's supported workspace-scoped endpoint so pull request writes are not blocked by HTTP 404.\n\nCloses pingdotgg#9034
@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 1, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This focused server fix replaces a retired Bitbucket permissions endpoint and changes the permission preflight used for pull-request write capabilities. Because it modifies production access-control behavior, human review is warranted despite the small, tested diff.

You can add or adjust custom eligibility rules. Learn more.

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

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Bitbucket PR comments fail because permission preflight returns HTTP 404

1 participant

@OliStarCooke
, '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

fix(server): use Bitbucket workspace permissions endpoint - #9035

Open
OliStarCooke wants to merge 1 commit into
pingdotgg:mainfrom
OliStarCooke:fix/bitbucket-workspace-permissions
Open

fix(server): use Bitbucket workspace permissions endpoint#9035
OliStarCooke wants to merge 1 commit into
pingdotgg:mainfrom
OliStarCooke:fix/bitbucket-workspace-permissions

Conversation

@OliStarCooke

@OliStarCookeOliStarCooke commented Sep 1, 2026

Copy link
Copy Markdown

What Changed

Bitbucket pull request permission checks now use the supported, workspace-scoped endpoint:

GET /2.0/user/workspaces/{workspace}/permissions/repositories

The server still filters the response to the requested repository and decodes the same effective admin, write, or read permission. The old HTTP 410 fallback was removed with the retired endpoint.

A regression test makes any request to the old endpoint fail with HTTP 404 and verifies that the supported endpoint succeeds. The existing authentication-failure coverage remains in place.

Why

Before every pull request write, PullRequestService asks the provider for the viewer's permissions. T3 Code used Bitbucket's removed /user/permissions/repositories endpoint for that preflight. Some Bitbucket accounts now receive HTTP 404 from the endpoint, so getViewerPermissions failed and the server never sent the requested comment.

The replacement endpoint reports the authenticated caller's effective repository permissions and accepts the existing read:repository:bitbucket API-token scope. Using it fixes the preflight without hiding real HTTP 401, HTTP 403, network, or response-decoding failures.

Closes#9034

Verification

  • vp test run apps/server/src/pullRequest/BitbucketPullRequestApi.test.ts apps/server/src/pullRequest/BitbucketPullRequestProvider.test.ts — 47 tests passed
  • Targeted formatting check passed
  • Targeted lint passed
  • Server typecheck passed; it reports only existing suggestions in unrelated files
  • git diff --check passed

This was not tested by posting a comment to a live Bitbucket Cloud pull request.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • UI screenshots are not applicable because this is a server-only change
  • A video is not applicable because this does not change motion or interaction

Authored with gpt-5.6-sol via the Codex harness in T3 Code.


Note

Medium Risk
Touches preflight permission checks before Bitbucket PR writes; wrong endpoint or decoding could block comments/merges, though scope is limited to Bitbucket integration code with updated tests.

Overview
Bitbucket repository permission preflight now calls GET /user/workspaces/{workspace}/permissions/repositories instead of the retired /user/permissions/repositories route, using the workspace parsed from workspace/slug while keeping the same repository.full_name filter and permission decoding.

The HTTP 410 “endpoint removed” workaround is gone: getRepositoryPermission no longer treats a deprecated-endpoint response as “permission unknown → allow” and instead surfaces real API outcomes (e.g. 401 still fails the read).

Tests were updated to assert the new URL, exercise success via the workspace endpoint when other URLs would 404, and rename the auth-failure case accordingly.

Reviewed by Cursor Bugbot for commit da055cd. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Switch BitbucketPullRequestApi.getRepositoryPermission to workspace permissions endpoint

Replaces the deprecated /user/permissions/repositories call with /user/workspaces/{workspace}/permissions/repositories (workspace URL-encoded). The filter query and escaping behavior are unchanged.

  • Removes the isRepositoryPermissionRemovedError helper and its special-case catch that treated an HTTP 410 from the old endpoint as an implicit grant.
  • Updates tests to expect the new workspace-scoped URL and verifies that 401 failures still propagate as failures.
  • Risk: errors from the new endpoint now propagate normally instead of a 410 being converted to true; callers of getRepositoryPermission that relied on the old 410-as-success behavior in BitbucketPullRequestApi.ts will see different results when the endpoint returns 410.

Macroscope summarized da055cd.

Replace the removed user-wide permissions preflight with Bitbucket's supported workspace-scoped endpoint so pull request writes are not blocked by HTTP 404.\n\nCloses pingdotgg#9034
@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 1, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This focused server fix replaces a retired Bitbucket permissions endpoint and changes the permission preflight used for pull-request write capabilities. Because it modifies production access-control behavior, human review is warranted despite the small, tested diff.

You can add or adjust custom eligibility rules. Learn more.

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

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Bitbucket PR comments fail because permission preflight returns HTTP 404

1 participant

@OliStarCooke
, '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

fix(server): use Bitbucket workspace permissions endpoint - #9035

Open
OliStarCooke wants to merge 1 commit into
pingdotgg:mainfrom
OliStarCooke:fix/bitbucket-workspace-permissions
Open

fix(server): use Bitbucket workspace permissions endpoint#9035
OliStarCooke wants to merge 1 commit into
pingdotgg:mainfrom
OliStarCooke:fix/bitbucket-workspace-permissions

Conversation

@OliStarCooke

@OliStarCookeOliStarCooke commented Sep 1, 2026

Copy link
Copy Markdown

What Changed

Bitbucket pull request permission checks now use the supported, workspace-scoped endpoint:

GET /2.0/user/workspaces/{workspace}/permissions/repositories

The server still filters the response to the requested repository and decodes the same effective admin, write, or read permission. The old HTTP 410 fallback was removed with the retired endpoint.

A regression test makes any request to the old endpoint fail with HTTP 404 and verifies that the supported endpoint succeeds. The existing authentication-failure coverage remains in place.

Why

Before every pull request write, PullRequestService asks the provider for the viewer's permissions. T3 Code used Bitbucket's removed /user/permissions/repositories endpoint for that preflight. Some Bitbucket accounts now receive HTTP 404 from the endpoint, so getViewerPermissions failed and the server never sent the requested comment.

The replacement endpoint reports the authenticated caller's effective repository permissions and accepts the existing read:repository:bitbucket API-token scope. Using it fixes the preflight without hiding real HTTP 401, HTTP 403, network, or response-decoding failures.

Closes#9034

Verification

  • vp test run apps/server/src/pullRequest/BitbucketPullRequestApi.test.ts apps/server/src/pullRequest/BitbucketPullRequestProvider.test.ts — 47 tests passed
  • Targeted formatting check passed
  • Targeted lint passed
  • Server typecheck passed; it reports only existing suggestions in unrelated files
  • git diff --check passed

This was not tested by posting a comment to a live Bitbucket Cloud pull request.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • UI screenshots are not applicable because this is a server-only change
  • A video is not applicable because this does not change motion or interaction

Authored with gpt-5.6-sol via the Codex harness in T3 Code.


Note

Medium Risk
Touches preflight permission checks before Bitbucket PR writes; wrong endpoint or decoding could block comments/merges, though scope is limited to Bitbucket integration code with updated tests.

Overview
Bitbucket repository permission preflight now calls GET /user/workspaces/{workspace}/permissions/repositories instead of the retired /user/permissions/repositories route, using the workspace parsed from workspace/slug while keeping the same repository.full_name filter and permission decoding.

The HTTP 410 “endpoint removed” workaround is gone: getRepositoryPermission no longer treats a deprecated-endpoint response as “permission unknown → allow” and instead surfaces real API outcomes (e.g. 401 still fails the read).

Tests were updated to assert the new URL, exercise success via the workspace endpoint when other URLs would 404, and rename the auth-failure case accordingly.

Reviewed by Cursor Bugbot for commit da055cd. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Switch BitbucketPullRequestApi.getRepositoryPermission to workspace permissions endpoint

Replaces the deprecated /user/permissions/repositories call with /user/workspaces/{workspace}/permissions/repositories (workspace URL-encoded). The filter query and escaping behavior are unchanged.

  • Removes the isRepositoryPermissionRemovedError helper and its special-case catch that treated an HTTP 410 from the old endpoint as an implicit grant.
  • Updates tests to expect the new workspace-scoped URL and verifies that 401 failures still propagate as failures.
  • Risk: errors from the new endpoint now propagate normally instead of a 410 being converted to true; callers of getRepositoryPermission that relied on the old 410-as-success behavior in BitbucketPullRequestApi.ts will see different results when the endpoint returns 410.

Macroscope summarized da055cd.

Replace the removed user-wide permissions preflight with Bitbucket's supported workspace-scoped endpoint so pull request writes are not blocked by HTTP 404.\n\nCloses pingdotgg#9034
@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 1, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This focused server fix replaces a retired Bitbucket permissions endpoint and changes the permission preflight used for pull-request write capabilities. Because it modifies production access-control behavior, human review is warranted despite the small, tested diff.

You can add or adjust custom eligibility rules. Learn more.

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

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Bitbucket PR comments fail because permission preflight returns HTTP 404

1 participant

@OliStarCooke
, '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

fix(server): use Bitbucket workspace permissions endpoint - #9035

Open
OliStarCooke wants to merge 1 commit into
pingdotgg:mainfrom
OliStarCooke:fix/bitbucket-workspace-permissions
Open

fix(server): use Bitbucket workspace permissions endpoint#9035
OliStarCooke wants to merge 1 commit into
pingdotgg:mainfrom
OliStarCooke:fix/bitbucket-workspace-permissions

Conversation

@OliStarCooke

@OliStarCookeOliStarCooke commented Sep 1, 2026

Copy link
Copy Markdown

What Changed

Bitbucket pull request permission checks now use the supported, workspace-scoped endpoint:

GET /2.0/user/workspaces/{workspace}/permissions/repositories

The server still filters the response to the requested repository and decodes the same effective admin, write, or read permission. The old HTTP 410 fallback was removed with the retired endpoint.

A regression test makes any request to the old endpoint fail with HTTP 404 and verifies that the supported endpoint succeeds. The existing authentication-failure coverage remains in place.

Why

Before every pull request write, PullRequestService asks the provider for the viewer's permissions. T3 Code used Bitbucket's removed /user/permissions/repositories endpoint for that preflight. Some Bitbucket accounts now receive HTTP 404 from the endpoint, so getViewerPermissions failed and the server never sent the requested comment.

The replacement endpoint reports the authenticated caller's effective repository permissions and accepts the existing read:repository:bitbucket API-token scope. Using it fixes the preflight without hiding real HTTP 401, HTTP 403, network, or response-decoding failures.

Closes#9034

Verification

  • vp test run apps/server/src/pullRequest/BitbucketPullRequestApi.test.ts apps/server/src/pullRequest/BitbucketPullRequestProvider.test.ts — 47 tests passed
  • Targeted formatting check passed
  • Targeted lint passed
  • Server typecheck passed; it reports only existing suggestions in unrelated files
  • git diff --check passed

This was not tested by posting a comment to a live Bitbucket Cloud pull request.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • UI screenshots are not applicable because this is a server-only change
  • A video is not applicable because this does not change motion or interaction

Authored with gpt-5.6-sol via the Codex harness in T3 Code.


Note

Medium Risk
Touches preflight permission checks before Bitbucket PR writes; wrong endpoint or decoding could block comments/merges, though scope is limited to Bitbucket integration code with updated tests.

Overview
Bitbucket repository permission preflight now calls GET /user/workspaces/{workspace}/permissions/repositories instead of the retired /user/permissions/repositories route, using the workspace parsed from workspace/slug while keeping the same repository.full_name filter and permission decoding.

The HTTP 410 “endpoint removed” workaround is gone: getRepositoryPermission no longer treats a deprecated-endpoint response as “permission unknown → allow” and instead surfaces real API outcomes (e.g. 401 still fails the read).

Tests were updated to assert the new URL, exercise success via the workspace endpoint when other URLs would 404, and rename the auth-failure case accordingly.

Reviewed by Cursor Bugbot for commit da055cd. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Switch BitbucketPullRequestApi.getRepositoryPermission to workspace permissions endpoint

Replaces the deprecated /user/permissions/repositories call with /user/workspaces/{workspace}/permissions/repositories (workspace URL-encoded). The filter query and escaping behavior are unchanged.

  • Removes the isRepositoryPermissionRemovedError helper and its special-case catch that treated an HTTP 410 from the old endpoint as an implicit grant.
  • Updates tests to expect the new workspace-scoped URL and verifies that 401 failures still propagate as failures.
  • Risk: errors from the new endpoint now propagate normally instead of a 410 being converted to true; callers of getRepositoryPermission that relied on the old 410-as-success behavior in BitbucketPullRequestApi.ts will see different results when the endpoint returns 410.

Macroscope summarized da055cd.

Replace the removed user-wide permissions preflight with Bitbucket's supported workspace-scoped endpoint so pull request writes are not blocked by HTTP 404.\n\nCloses pingdotgg#9034
@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 1, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This focused server fix replaces a retired Bitbucket permissions endpoint and changes the permission preflight used for pull-request write capabilities. Because it modifies production access-control behavior, human review is warranted despite the small, tested diff.

You can add or adjust custom eligibility rules. Learn more.

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

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Bitbucket PR comments fail because permission preflight returns HTTP 404

1 participant

@OliStarCooke
, '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

fix(server): use Bitbucket workspace permissions endpoint - #9035

Open
OliStarCooke wants to merge 1 commit into
pingdotgg:mainfrom
OliStarCooke:fix/bitbucket-workspace-permissions
Open

fix(server): use Bitbucket workspace permissions endpoint#9035
OliStarCooke wants to merge 1 commit into
pingdotgg:mainfrom
OliStarCooke:fix/bitbucket-workspace-permissions

Conversation

@OliStarCooke

@OliStarCookeOliStarCooke commented Sep 1, 2026

Copy link
Copy Markdown

What Changed

Bitbucket pull request permission checks now use the supported, workspace-scoped endpoint:

GET /2.0/user/workspaces/{workspace}/permissions/repositories

The server still filters the response to the requested repository and decodes the same effective admin, write, or read permission. The old HTTP 410 fallback was removed with the retired endpoint.

A regression test makes any request to the old endpoint fail with HTTP 404 and verifies that the supported endpoint succeeds. The existing authentication-failure coverage remains in place.

Why

Before every pull request write, PullRequestService asks the provider for the viewer's permissions. T3 Code used Bitbucket's removed /user/permissions/repositories endpoint for that preflight. Some Bitbucket accounts now receive HTTP 404 from the endpoint, so getViewerPermissions failed and the server never sent the requested comment.

The replacement endpoint reports the authenticated caller's effective repository permissions and accepts the existing read:repository:bitbucket API-token scope. Using it fixes the preflight without hiding real HTTP 401, HTTP 403, network, or response-decoding failures.

Closes#9034

Verification

  • vp test run apps/server/src/pullRequest/BitbucketPullRequestApi.test.ts apps/server/src/pullRequest/BitbucketPullRequestProvider.test.ts — 47 tests passed
  • Targeted formatting check passed
  • Targeted lint passed
  • Server typecheck passed; it reports only existing suggestions in unrelated files
  • git diff --check passed

This was not tested by posting a comment to a live Bitbucket Cloud pull request.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • UI screenshots are not applicable because this is a server-only change
  • A video is not applicable because this does not change motion or interaction

Authored with gpt-5.6-sol via the Codex harness in T3 Code.


Note

Medium Risk
Touches preflight permission checks before Bitbucket PR writes; wrong endpoint or decoding could block comments/merges, though scope is limited to Bitbucket integration code with updated tests.

Overview
Bitbucket repository permission preflight now calls GET /user/workspaces/{workspace}/permissions/repositories instead of the retired /user/permissions/repositories route, using the workspace parsed from workspace/slug while keeping the same repository.full_name filter and permission decoding.

The HTTP 410 “endpoint removed” workaround is gone: getRepositoryPermission no longer treats a deprecated-endpoint response as “permission unknown → allow” and instead surfaces real API outcomes (e.g. 401 still fails the read).

Tests were updated to assert the new URL, exercise success via the workspace endpoint when other URLs would 404, and rename the auth-failure case accordingly.

Reviewed by Cursor Bugbot for commit da055cd. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Switch BitbucketPullRequestApi.getRepositoryPermission to workspace permissions endpoint

Replaces the deprecated /user/permissions/repositories call with /user/workspaces/{workspace}/permissions/repositories (workspace URL-encoded). The filter query and escaping behavior are unchanged.

  • Removes the isRepositoryPermissionRemovedError helper and its special-case catch that treated an HTTP 410 from the old endpoint as an implicit grant.
  • Updates tests to expect the new workspace-scoped URL and verifies that 401 failures still propagate as failures.
  • Risk: errors from the new endpoint now propagate normally instead of a 410 being converted to true; callers of getRepositoryPermission that relied on the old 410-as-success behavior in BitbucketPullRequestApi.ts will see different results when the endpoint returns 410.

Macroscope summarized da055cd.

Replace the removed user-wide permissions preflight with Bitbucket's supported workspace-scoped endpoint so pull request writes are not blocked by HTTP 404.\n\nCloses pingdotgg#9034
@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 1, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This focused server fix replaces a retired Bitbucket permissions endpoint and changes the permission preflight used for pull-request write capabilities. Because it modifies production access-control behavior, human review is warranted despite the small, tested diff.

You can add or adjust custom eligibility rules. Learn more.

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

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Bitbucket PR comments fail because permission preflight returns HTTP 404

1 participant

@OliStarCooke
, '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

fix(server): use Bitbucket workspace permissions endpoint - #9035

Open
OliStarCooke wants to merge 1 commit into
pingdotgg:mainfrom
OliStarCooke:fix/bitbucket-workspace-permissions
Open

fix(server): use Bitbucket workspace permissions endpoint#9035
OliStarCooke wants to merge 1 commit into
pingdotgg:mainfrom
OliStarCooke:fix/bitbucket-workspace-permissions

Conversation

@OliStarCooke

@OliStarCookeOliStarCooke commented Sep 1, 2026

Copy link
Copy Markdown

What Changed

Bitbucket pull request permission checks now use the supported, workspace-scoped endpoint:

GET /2.0/user/workspaces/{workspace}/permissions/repositories

The server still filters the response to the requested repository and decodes the same effective admin, write, or read permission. The old HTTP 410 fallback was removed with the retired endpoint.

A regression test makes any request to the old endpoint fail with HTTP 404 and verifies that the supported endpoint succeeds. The existing authentication-failure coverage remains in place.

Why

Before every pull request write, PullRequestService asks the provider for the viewer's permissions. T3 Code used Bitbucket's removed /user/permissions/repositories endpoint for that preflight. Some Bitbucket accounts now receive HTTP 404 from the endpoint, so getViewerPermissions failed and the server never sent the requested comment.

The replacement endpoint reports the authenticated caller's effective repository permissions and accepts the existing read:repository:bitbucket API-token scope. Using it fixes the preflight without hiding real HTTP 401, HTTP 403, network, or response-decoding failures.

Closes#9034

Verification

  • vp test run apps/server/src/pullRequest/BitbucketPullRequestApi.test.ts apps/server/src/pullRequest/BitbucketPullRequestProvider.test.ts — 47 tests passed
  • Targeted formatting check passed
  • Targeted lint passed
  • Server typecheck passed; it reports only existing suggestions in unrelated files
  • git diff --check passed

This was not tested by posting a comment to a live Bitbucket Cloud pull request.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • UI screenshots are not applicable because this is a server-only change
  • A video is not applicable because this does not change motion or interaction

Authored with gpt-5.6-sol via the Codex harness in T3 Code.


Note

Medium Risk
Touches preflight permission checks before Bitbucket PR writes; wrong endpoint or decoding could block comments/merges, though scope is limited to Bitbucket integration code with updated tests.

Overview
Bitbucket repository permission preflight now calls GET /user/workspaces/{workspace}/permissions/repositories instead of the retired /user/permissions/repositories route, using the workspace parsed from workspace/slug while keeping the same repository.full_name filter and permission decoding.

The HTTP 410 “endpoint removed” workaround is gone: getRepositoryPermission no longer treats a deprecated-endpoint response as “permission unknown → allow” and instead surfaces real API outcomes (e.g. 401 still fails the read).

Tests were updated to assert the new URL, exercise success via the workspace endpoint when other URLs would 404, and rename the auth-failure case accordingly.

Reviewed by Cursor Bugbot for commit da055cd. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Switch BitbucketPullRequestApi.getRepositoryPermission to workspace permissions endpoint

Replaces the deprecated /user/permissions/repositories call with /user/workspaces/{workspace}/permissions/repositories (workspace URL-encoded). The filter query and escaping behavior are unchanged.

  • Removes the isRepositoryPermissionRemovedError helper and its special-case catch that treated an HTTP 410 from the old endpoint as an implicit grant.
  • Updates tests to expect the new workspace-scoped URL and verifies that 401 failures still propagate as failures.
  • Risk: errors from the new endpoint now propagate normally instead of a 410 being converted to true; callers of getRepositoryPermission that relied on the old 410-as-success behavior in BitbucketPullRequestApi.ts will see different results when the endpoint returns 410.

Macroscope summarized da055cd.

Replace the removed user-wide permissions preflight with Bitbucket's supported workspace-scoped endpoint so pull request writes are not blocked by HTTP 404.\n\nCloses pingdotgg#9034
@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 1, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This focused server fix replaces a retired Bitbucket permissions endpoint and changes the permission preflight used for pull-request write capabilities. Because it modifies production access-control behavior, human review is warranted despite the small, tested diff.

You can add or adjust custom eligibility rules. Learn more.

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

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Bitbucket PR comments fail because permission preflight returns HTTP 404

1 participant

@OliStarCooke