Skip to content

v0.2.0

Latest

Choose a tag to compare

@github-actions github-actions released this 19 Oct 22:17
· 13 commits to main since this release
Immutable release. Only release title and notes can be modified.
3acee76

v0.2.0 is the next major release.

Capability changes

🟩 136 gained · 🟨 268 changed · 🟥 27 removed or downgraded · ✨ 1 now on every provider · 🔑 160 changed for some kinds of credential

Provider Lost Gained Verified
GitHub GitHub -5 🟥🟥 🟩🟩🟩🟩🟩🟩🟩🟩 +32 133 → 160
GitLab GitLab -3 🟥 🟩🟩🟩🟩🟩 +19 111 → 127
Bitbucket Bitbucket -3 🟥 🟩🟩 +5 49 → 51
Forgejo Forgejo -3 🟥 🟩🟩🟩🟩 +14 103 → 114
Gitea Gitea -3 🟥 🟩🟩🟩🟩🟩 +17 103 → 117
Gitee Gitee 🟩🟩 +6 42 → 48
Azure DevOps Azure DevOps -3 🟥 🟩🟩 +7 51 → 55
Pushin.eu Pushin.eu 🟩 +2 16 → 18
Tangled Tangled -2 🟥 🟩🟩🟩🟩🟩🟩🟩🟩🟩 +34 36 → 68
Cloudflare Artifacts Cloudflare Artifacts 🟩🟩 +8 0 → 8
Sourcehut Sourcehut 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 +40 0 → 40

Verified capabilities with credentials: native, experimental or emulated. Each square stands for up to 4.

GitHub GitLab Bitbucket Forgejo Gitea Gitee Azure DevOps Cursor Origin Pushin.eu Tangled Cloudflare Artifacts Sourcehut
writes.upsertComment (issue) 🟥 🟥 ⬜ 🟥 🟥 🟥 🟥 ⬜ ⬜ 🟥 ⬜ ⬜
writes.upsertComment (PR) 🟥 🟥 🟥 🟥 🟥 🟥 🟥 🟥 ⬜ 🟥 ⬜ ⬜
writes.upsertComment (discussion) 🟥 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
writes.upsertComment (commit) 🟥 ⬜ 🟥 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
writes.approveAndMerge 🟥 🟥 🟥 🟥 🟥 🟥 🟥 🟥 ⬜ ⬜ ⬜ ⬜
repos.get 🟦 🟦 🟦 🟦 🟦 🟦 🟦 🟦 🟦 🟦 🟩 🟩
repos.list 🟦 🟦 🟦 🟦 🟦 🟦 🟦 ⬜ 🟦 🟦 🟩 🟩
threads get (PR), list (PR), getMany, events (PR) 🟦 🟦 🟦 🟦 🟦 🟦 🟦 🟦 🟦 🟦 ⬜ 🟩
comments.list (PR) 🟦 🟦 🟦 🟦 🟦 🟦 🟦 🟦 🟦 🟦 ⬜ 🟩
sources.webhook 🟦 🟦 🟦 🟦 🟦 🟦 🟦 🟦 🟨 🟦 ⬜ 🟩
contents file, tree, resolveRef, commits, commit 🟦 🟦 🟦 🟦 🟦 🟦 🟦 ⬜ ⬜ 🟩 🟩 🟩
users.me 🟩 🟦 🟦 🟦 🟦 🟦 ⬜ ⬜ 🟦 🟦 ⬜ 🟩
threads get (issue), list (issue), events (issue) 🟦 🟦 ⬜ 🟦 🟦 🟦 🟦 ⬜ 🟦 🟦 ⬜ 🟩
comments.list (issue) 🟦 🟦 ⬜ 🟦 🟦 🟦 🟦 ⬜ 🟦 🟦 ⬜ 🟩
writes.merge 🟦 🟦 🟦 🟦 🟦 🟦 🟦 🟦 🟨 🟩 ⬜ ⬜
contents branches, tags 🟦 🟦 🟦 🟦 🟦 🟦 🟦 ⬜ ⬜ 🟩 ⬜ 🟩
repos.labels 🟦 🟦 🟨 🟦 🟦 🟦 ⬜ ⬜ 🟦 🟩 ⬜ 🟩
repos.collaborators 🟦 🟦 ⬜ 🟦 🟦 🟦 ⬜ ⬜ 🟦 🟩 ⬜ 🟩
writes.update (PR) 🟦 🟦 🟦 🟦 🟦 🟩 🟦 ⬜ 🟨 🟦 ⬜ ⬜
contents compare, threadCommits 🔓 🟦 🟦 🟦 🟦 🟦 🟦 🟦 ⬜ ⬜ 🟩 ⬜ ⬜
users.get 🟦 🟦 ⬜ 🟦 🟦 🟦 ⬜ ⬜ ⬜ 🟩 ⬜ 🟩
writes.create (PR) 🟦 🟦 🟦 🟦 🟦 ⬜ 🟦 ⬜ 🟨 🟩 ⬜ ⬜
contents.threadFiles 🔓 🟦 🟦 🟦 🟦 🟦 🟦 ⬜ ⬜ ⬜ 🟩 ⬜ ⬜
search.repos 🟦 🟦 🟦 🟦 🟦 🟦 ⬜ ⬜ ⬜ ⬜ ⬜ 🟩
repos.permissionFor 🟦 🟦 ⬜ 🟦 🟦 ⬜ ⬜ ⬜ ⬜ 🟩 ⬜ 🟩
writes.setLabels (issue, PR) 🟦 🟦 🟨 🟦 🟦 ⬜ 🟦 ⬜ 🟨 🟩 ⬜ ⬜
writes.setAssignees (issue) 🟦 🟦 ⬜ 🟦 🟦 ⬜ 🟦 ⬜ 🟨 🟩 ⬜ ⬜
subscriptions.get (issue) 🟦 🟦 ⬜ 🟦 🟦 ⬜ ⬜ ⬜ ⬜ 🟦 ⬜ 🟩
releases list, get, latest, getByTag 🟦 🟦 🟨 🟦 🟦 🟦 ⬜ 🟨 ⬜ 🟨 ⬜ 🟩
repos.createLabel 🟦 🟦 🟨 🟦 🟦 ⬜ ⬜ ⬜ ⬜ 🟩 ⬜ ⬜
repos.addCollaborator 🟦 🟦 ⬜ 🟦 🟦 ⬜ ⬜ ⬜ ⬜ 🟩 ⬜ ⬜
reactions.list (issue, PR) 🔓 🟦 🟦 🟨 🟦 🟦 ⬜ ⬜ ⬜ ⬜ 🟩 ⬜ ⬜
writes addLabels (issue, PR), removeLabels (issue, PR), react (issue, PR) 🟦 🟦 🟨 🟦 🟦 ⬜ ⬜ ⬜ 🟨 🟩 ⬜ ⬜
writes.setAssignees (PR) 🟦 🟦 ⬜ 🟦 🟦 ⬜ ⬜ ⬜ 🟨 🟩 ⬜ ⬜
ci runs, run, jobs, log 🟦 🟦 ⬜ 🟦 🟦 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟩
releases.downloadAsset 🟦 ⬜ 🟨 🟦 🟦 ⬜ ⬜ 🟨 ⬜ 🟨 ⬜ 🟩
search.code 🟦 🟦 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟩
repos.byOwner 🟩 🟩 🟩 🟩 🟩 🟩 🟩 ⬜ ⬜ 🟩 🟩 🟩
comments.get (PR) 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟨 🟩 🟩 ⬜ 🟩
comments.get (issue) 🟩 🟩 ⬜ 🟩 🟩 🟩 🟩 ⬜ 🟩 🟩 ⬜ 🟩
contents.commitFiles 🟩 🟩 🟩 🟩 🟩 ⬜ 🟩 ⬜ ⬜ ⬜ ⬜ ⬜
reviews.get 🟩 🟩 🟩 🟩 🟩 🟨 🟩 🟨 ⬜ 🟨 ⬜ ⬜
repos.events 🔓 🟩 🟩 ⬜ 🟩 🟩 🟩 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
users.events 🟩 🟩 ⬜ 🟩 🟩 🟨 ⬜ ⬜ ⬜ 🟩 ⬜ ⬜
orgs teams, teamMembers 🟩 🟩 ⬜ 🟩 🟩 ⬜ 🟩 ⬜ ⬜ ⬜ ⬜ ⬜
ci.job 🟩 🟩 ⬜ 🟩 🟩 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟩
repos.templates 🔓 🟩 🟩 🟨 🟩 🟩 ⬜ 🟨 🟨 🟨 🟨 ⬜ ⬜
writes.updateBranch 🟩 🟩 🟨 🟩 🟩 ⬜ 🟨 🟨 🟨 🟨 ⬜ ⬜
repos.contributors 🔓 🟩 🟩 ⬜ ⬜ ⬜ 🟩 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
users.block 🟩 ⬜ 🟨 🟩 🟩 ⬜ 🟨 🟨 🟨 🟨 ⬜ ⬜
orgs.block 🟩 ⬜ 🟨 🟩 🟩 ⬜ 🟨 🟨 🟨 🟨 ⬜ ⬜
comments.get (commit) 🟩 🟩 🟩 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
writes.lock (issue, PR) 🟩 🟩 🟨 🟨 🟩 ⬜ 🟨 🟨 🟨 🟨 ⬜ ⬜
reviews.reply 🟩 🟩 ⬜ 🟨 🟩 ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜
threads closingIssues, closingPullRequests 🟩 🟩 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
securityAlerts (advisory) 🟩 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜
repos.contributorStats 🔓 🟩 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
users.sponsorable 🟩 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
comments.get (discussion) 🟩 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
comments.hide (issue, PR, discussion, commit) 🟩 🟨 🟨 🟨 🟨 🟨 🟨 🟨 🟨 🟨 ⬜ ⬜
writes.lock (discussion) 🟩 ⬜ 🟨 🟨 ⬜ ⬜ 🟨 🟨 🟨 🟨 ⬜ ⬜
checks.get 🔓 🟩 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜
writes comment (PR), close (PR) 🟦 🟦 🟦 🟦 🟦 🟦 🟦 🟦 🟨 🟦 ⬜ ⬜
writes.reopen (PR) 🟦 🟦 ⬜ 🟦 🟦 🟦 🟦 🟦 🟨 🟦 ⬜ ⬜
checks.thread (PR) 🟦 🟦 🟦 🟦 🟦 🟦 🟦 🟦 ⬜ 🟨 ⬜ ⬜
sources.poll 🟦 🟦 🟨 🟦 🟦 🟦 ⬜ 🟨 🟦 🟦 ⬜ ⬜
comments edit (PR), delete (PR) 🟦 🟦 🟦 🟦 🟦 ⬜ 🟦 ⬜ 🟨 🟦 ⬜ ⬜
notifications.list 🟦 🟦 🟨 🟦 🟦 🟦 ⬜ 🟨 🟦 🟦 ⬜ ⬜
checks.list 🟦 🟦 🟦 🟦 🟦 🟦 🟦 ⬜ ⬜ 🟨 ⬜ ⬜
reviews.list 🟦 🟦 🟦 🟦 🟦 🟨 🟦 🟦 ⬜ 🟨 ⬜ ⬜
comments edit (issue), delete (issue) 🟦 🟦 ⬜ 🟦 🟦 ⬜ 🟦 ⬜ 🟨 🟦 ⬜ ⬜
writes comment (issue), close (issue), reopen (issue), create (issue), update (issue) 🟦 🟦 ⬜ 🟦 🟦 ⬜ 🟦 ⬜ 🟨 🟦 ⬜ ⬜
writes.requestReview (PR) 🟦 🟦 🟦 🟦 🟦 ⬜ 🟦 ⬜ 🟨 🟨 ⬜ ⬜
checks.report 🟦 🟦 🟦 🟦 🟦 ⬜ 🟦 ⬜ ⬜ 🟨 ⬜ ⬜
reviews create, approve 🟦 🟦 🟦 🟦 🟦 ⬜ 🟦 ⬜ ⬜ 🟨 ⬜ ⬜
notifications.markRead 🟦 ⬜ 🟨 🟦 🟦 🟦 ⬜ 🟨 🟨 🟦 ⬜ ⬜
webhooks list, create, update, delete 🟦 🟦 🟦 🟦 🟦 ⬜ ⬜ ⬜ 🟨 🟨 ⬜ ⬜
webhooks.rotateSecret 🟦 🟦 🟦 🟦 🟦 ⬜ 🟨 ⬜ 🟨 🟨 ⬜ ⬜
repos.milestones 🟦 🟦 🟨 🟦 🟦 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
notifications markDone, unsubscribe 🟦 🟦 🟨 🟦 🟦 ⬜ ⬜ 🟨 🟨 ⬜ ⬜ ⬜
notifications.unreadCount ⬜ 🟦 🟨 🟦 🟦 🟦 ⬜ 🟨 ⬜ ⬜ ⬜ ⬜
writes.setMilestone (issue, PR) 🟦 🟦 🟨 🟦 🟦 ⬜ ⬜ ⬜ 🟨 ⬜ ⬜ ⬜
releases create, update 🟦 🟦 🟨 🟦 🟦 ⬜ ⬜ 🟨 ⬜ 🟨 ⬜ ⬜
notifications.markAllRead 🟦 ⬜ 🟨 🟦 🟦 ⬜ ⬜ 🟨 🟨 ⬜ ⬜ ⬜
writes.comment (commit) 🟦 🟦 🟦 ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜ ⬜
reviews.submit 🟦 ⬜ ⬜ 🟦 🟦 ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜
reviews.resolveThread 🟦 🟦 ⬜ 🟨 🟨 ⬜ 🟦 ⬜ ⬜ 🟨 ⬜ ⬜
comments edit (commit), delete (commit) 🟦 ⬜ 🟦 ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜ ⬜
writes transfer, markDuplicate 🟦 🟦 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜ ⬜
checks.rerun 🟦 🟦 ⬜ 🟨 🟨 ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜
securityAlerts (dependency) 🟦 🟦 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜
securityAlerts (code scanning) 🟦 🟦 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜
securityAlerts (secret) 🟦 🟦 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜
comments edit (discussion), delete (discussion) 🟦 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜ ⬜
reactions.list (discussion) 🟦 ⬜ 🟨 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
notifications.markAllDone ⬜ 🟦 🟨 ⬜ ⬜ ⬜ ⬜ 🟨 🟨 ⬜ ⬜ ⬜
writes comment (discussion), close (discussion), reopen (discussion), update (discussion) 🟦 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜ ⬜
writes.react (discussion) 🟦 ⬜ 🟨 ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜ ⬜
installations 🟦 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜ ⬜ ⬜
webhooks deliveries, redeliver 🟦 ⬜ 🟨 🟨 🟨 🟨 🟨 ⬜ 🟨 🟨 ⬜ ⬜
reactions.list (commit) 🔓 ⬜ ⬜ 🟨 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
writes close (commit), reopen (commit), create (discussion, commit), update (commit), setAssignees (discussion, commit) 🔓 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜ ⬜
writes setLabels (discussion, commit), addLabels (discussion, commit), removeLabels (discussion, commit), setMilestone (discussion, commit), react (commit) 🔓 ⬜ ⬜ 🟨 ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜ ⬜
writes.requestReview (issue, discussion, commit) 🔓 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 🟨 ⬜ ⬜
checks.thread (issue, discussion, commit) 🔓 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜
writes.lock (commit) 🔓 ⬜ ⬜ 🟨 🟨 ⬜ ⬜ 🟨 🟨 🟨 🟨 ⬜ ⬜
Without credentials, where that differs
GitHub GitLab Bitbucket Forgejo Gitea Gitee Azure DevOps Cursor Origin Pushin.eu Tangled Cloudflare Artifacts Sourcehut
contents file, tree, branches, tags, resolveRef, commits, commit 🟦 🟦 🟦 🟦 🟦 🟦 🟦 ⬜ ⬜ 🟩 ⬜ ⬜
repos.labels 🟦 ⬜ 🟨 🟦 🟦 🟦 ⬜ ⬜ 🟦 🟩 ⬜ ⬜
users.get 🟦 🟦 ⬜ 🟦 🟦 🟦 ⬜ ⬜ ⬜ 🟩 ⬜ ⬜
repos.collaborators ⬜ ⬜ ⬜ ⬜ ⬜ 🟦 ⬜ ⬜ ⬜ 🟩 ⬜ ⬜
repos.byOwner 🟩 🟩 🟩 🟩 🟩 🟩 🟩 ⬜ ⬜ 🟩 ⬜ ⬜
comments.get (PR) 🟩 ⬜ 🟨 🟩 🟩 🟩 🟩 ⬜ 🟩 🟩 ⬜ ⬜
users.events 🟩 🟩 ⬜ 🟩 🟩 ⬜ ⬜ ⬜ ⬜ 🟩 ⬜ ⬜
comments.get (issue) 🟨 ⬜ ⬜ 🟩 🟩 🟩 🟨 ⬜ 🟩 🟩 ⬜ ⬜
reviews.get 🟨 🟩 🟩 🟩 🟩 🟨 🟨 ⬜ ⬜ 🟨 ⬜ ⬜
ci.job 🟩 🟩 ⬜ 🟩 🟨 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
repos.permissionFor ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟩 ⬜ ⬜
orgs.teams ⬜ 🟩 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
threads closingIssues, closingPullRequests ⬜ 🟩 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
sources.webhook 🟦 🟦 🟦 🟦 🟦 🟦 🟦 🟦 🟨 🟦 ⬜ ⬜
checks.thread (PR) 🟦 🟦 🟦 🟦 🟦 🟦 ⬜ ⬜ ⬜ 🟨 ⬜ ⬜
checks.list 🟦 ⬜ 🟦 🟦 🟦 🟦 🟦 ⬜ ⬜ 🟨 ⬜ ⬜
reviews.list 🟦 🟦 🟦 🟦 🟦 🟨 🟦 ⬜ ⬜ 🟨 ⬜ ⬜
releases list, get, latest, getByTag 🟦 🟦 🟨 🟦 🟦 🟦 ⬜ 🟨 ⬜ 🟨 ⬜ ⬜
repos.milestones 🟦 ⬜ 🟨 🟦 🟦 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
releases.downloadAsset 🟦 ⬜ 🟨 🟦 🟦 ⬜ ⬜ 🟨 ⬜ 🟨 ⬜ ⬜
sources.poll ⬜ ⬜ 🟨 ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜ ⬜ ⬜
repos.createLabel ⬜ ⬜ 🟨 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
comments edit (issue, PR, discussion, commit), delete (issue, PR, discussion, commit) ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜ ⬜
reactions.list (discussion) ⬜ ⬜ 🟨 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
notifications list, unreadCount ⬜ ⬜ 🟨 ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜ ⬜ ⬜
notifications markRead, markDone, unsubscribe, markAllRead, markAllDone ⬜ ⬜ 🟨 ⬜ ⬜ ⬜ ⬜ 🟨 🟨 ⬜ ⬜ ⬜
writes comment (issue, PR, discussion, commit), close (issue, PR, discussion), reopen (issue, PR, discussion), create (issue, PR), update (issue, PR, discussion), setAssignees (issue, PR), merge, transfer, markDuplicate ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜ ⬜
writes setLabels (issue, PR), addLabels (issue, PR), removeLabels (issue, PR), setMilestone (issue, PR), react (issue, PR, discussion) ⬜ ⬜ 🟨 ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜ ⬜
writes.requestReview (PR) ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 🟨 ⬜ ⬜
checks.report ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜
checks.rerun ⬜ ⬜ ⬜ 🟨 🟨 ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜
reviews create, submit, approve ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜
reviews.resolveThread ⬜ ⬜ ⬜ 🟨 🟨 ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜
releases create, update ⬜ ⬜ 🟨 ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ 🟨 ⬜ ⬜
webhooks list, create, update, delete ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 🟨 ⬜ ⬜
webhooks.rotateSecret ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ 🟨 🟨 ⬜ ⬜
webhooks deliveries, redeliver ⬜ ⬜ 🟨 🟨 🟨 🟨 🟨 ⬜ 🟨 🟨 ⬜ ⬜
securityAlerts (dependency) ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜
securityAlerts (code scanning) ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜
securityAlerts (secret) ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜
securityAlerts (advisory) ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜
users.block ⬜ ⬜ 🟨 ⬜ ⬜ ⬜ 🟨 🟨 🟨 🟨 ⬜ ⬜
orgs.block ⬜ ⬜ 🟨 ⬜ ⬜ ⬜ 🟨 🟨 🟨 🟨 ⬜ ⬜
comments.get (commit) 🟨 🟨 🟨 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
comments.hide (issue, PR, discussion, commit) ⬜ 🟨 🟨 🟨 🟨 🟨 🟨 🟨 🟨 🟨 ⬜ ⬜
writes.lock (issue, PR, discussion) ⬜ ⬜ 🟨 🟨 ⬜ ⬜ 🟨 🟨 🟨 🟨 ⬜ ⬜
writes.updateBranch ⬜ ⬜ 🟨 ⬜ ⬜ ⬜ 🟨 🟨 🟨 🟨 ⬜ ⬜
reviews.reply ⬜ ⬜ ⬜ 🟨 ⬜ ⬜ ⬜ ⬜ ⬜ 🟨 ⬜ ⬜
With some kinds of credential, where that differs

GitHub

  • classic (Classic token): ✅ → ❌ installations ⚠️
  • fine-grained (Fine-grained token): ✅ → ❌ sources.poll, notifications list, markRead, markDone, unsubscribe, markAllRead, installations ⚠️
  • installation (App installation): ✅ → ❌ sources.poll, notifications list, markRead, markDone, unsubscribe, markAllRead ⚠️
  • app (App): ✅ → ❌ 125 capabilities ⚠️
  • app (App): 🧩 → ❌ repos.reviewerCandidates ⚠️

Cursor Origin

  • app (App): 🧪 → ❌ repos.get, threads get (PR), list (PR), getMany, events (PR), comments.list (PR), writes comment (PR), close (PR), reopen (PR), merge, checks.thread (PR), reviews.list ⚠️
  • app (App): ❔ → ❌ 21 capabilities ⚠️
In detail
  • Cloudflare Artifacts: New provider, with 8 verified capabilities

  • Sourcehut: New provider, with 40 verified capabilities

  • writes.upsertComment (issue): 🧩 → ❌ GitHub, GitLab, Forgejo, Gitea, Azure DevOps, Tangled ⚠️; ❔ → ❌ Gitee ⚠️

  • writes.upsertComment (PR): 🧩 → ❌ GitHub, GitLab, Bitbucket, Forgejo, Gitea, Azure DevOps, Tangled ⚠️; ❔ → ❌ Gitee, Cursor Origin ⚠️

  • writes.upsertComment (discussion): 🧩 → ❌ GitHub ⚠️

  • writes.upsertComment (commit): 🧩 → ❌ GitHub, Bitbucket ⚠️

  • writes.approveAndMerge: ✅ → ❌ GitHub, GitLab, Bitbucket, Forgejo, Gitea, Azure DevOps ⚠️; ❔ → ❌ Gitee, Cursor Origin ⚠️

  • sources.webhook: ❌ → ∅ Pushin.eu

  • contents.file: ❌ → ✅ Tangled

  • contents.tree: ❌ → ✅ Tangled

  • contents.resolveRef: ❌ → ✅ Tangled

  • contents.commits: ❌ → ✅ Tangled

  • contents.commit: ❌ → ✅ Tangled

  • users.me: ❌ → ✅ GitHub

  • writes.merge: ❌ → ∅ Pushin.eu; ❌ → ✅ Tangled

  • contents.branches: ❌ → ✅ Tangled

  • contents.tags: ❌ → ✅ Tangled

  • repos.labels: ❌ → ∅ Bitbucket; ❌ → ✅ Tangled

  • writes.update (PR): ❔ → ✅ Gitee; ❌ → ∅ Pushin.eu

  • repos.collaborators: ❌ → ✅ Tangled

  • contents.compare: ❌ → ✅ Tangled

  • contents.threadCommits: ❌ → ✅ Tangled

  • writes.create (PR): ❌ → ∅ Pushin.eu; ❌ → ✅ Tangled

  • users.get: ❌ → ✅ Tangled

  • contents.threadFiles: ❌ → ✅ Tangled

  • writes.setLabels (issue, PR): ❌ → ∅ Bitbucket, Pushin.eu; ❌ → ✅ Tangled

  • releases.list: ❌ → ∅ Bitbucket, Cursor Origin, Tangled

  • releases.get: ❌ → ∅ Bitbucket, Cursor Origin, Tangled

  • releases.latest: ❌ → ∅ Bitbucket, Cursor Origin, Tangled

  • releases.getByTag: ❌ → ∅ Bitbucket, Cursor Origin, Tangled

  • writes.setAssignees (issue, PR): ❌ → ∅ Pushin.eu; ❌ → ✅ Tangled

  • repos.permissionFor: ❌ → ✅ Tangled

  • repos.createLabel: ❌ → ∅ Bitbucket; ❌ → ✅ Tangled

  • reactions.list (issue, PR): ❌ → ∅ Bitbucket; ❌ → ✅ Tangled

  • writes.addLabels (issue, PR): ❌ → ∅ Bitbucket, Pushin.eu; ❌ → ✅ Tangled

  • writes.removeLabels (issue, PR): ❌ → ∅ Bitbucket, Pushin.eu; ❌ → ✅ Tangled

  • writes.react (issue, PR): ❌ → ∅ Bitbucket, Pushin.eu; ❌ → ✅ Tangled

  • repos.addCollaborator: ❌ → ✅ Tangled

  • releases.downloadAsset: ❌ → ∅ Bitbucket, Cursor Origin, Tangled

  • repos.byOwner: ❌ → ✅ GitHub, GitLab, Bitbucket, Forgejo, Gitea, Gitee, Azure DevOps, Tangled

  • comments.get (PR): ❌ → ✅ GitHub, GitLab, Forgejo, Gitea, Azure DevOps; ❌ → 🧩 Bitbucket, Gitee, Pushin.eu, Tangled; ❌ → ❔ Cursor Origin

  • comments.get (issue): ❌ → ✅ GitHub, GitLab, Forgejo, Gitea; ❌ → 🧩 Gitee, Pushin.eu, Tangled; ❌ → 🧪 Azure DevOps

  • contents.commitFiles: ❌ → ✅ GitHub, GitLab, Bitbucket, Forgejo, Gitea, Azure DevOps

  • reviews.get: ❌ → ✅ GitHub, Forgejo, Gitea; ❌ → 🧩 GitLab, Bitbucket, Azure DevOps; ❌ → ∅ Gitee, Tangled; ❌ → ❔ Cursor Origin

  • repos.events: ❌ → ✅ GitHub, GitLab, Forgejo, Gitea, Gitee

  • users.events: ❌ → ✅ GitHub, GitLab, Forgejo, Gitea, Tangled; ❌ → ❔ Gitee

  • orgs.teams: ❌ → ✅ GitHub, GitLab, Forgejo, Gitea, Azure DevOps

  • orgs.teamMembers: ❌ → ✅ GitHub, GitLab, Forgejo, Gitea, Azure DevOps

  • ci.job: ❌ → ✅ GitHub, GitLab, Gitea; ❌ → 🧩 Forgejo

  • repos.templates: ❌ → ✅ GitHub, GitLab, Forgejo, Gitea; ❌ → ∅ Bitbucket, Azure DevOps, Cursor Origin, Pushin.eu, Tangled

  • writes.updateBranch: ❌ → ✅ GitHub, GitLab, Forgejo, Gitea; ❌ → ∅ Bitbucket, Azure DevOps, Cursor Origin, Pushin.eu, Tangled

  • repos.contributors: ❌ → ✅ GitHub, GitLab, Gitee

  • users.block: ❌ → ✅ GitHub, Forgejo, Gitea; ❌ → ∅ Bitbucket, Azure DevOps, Cursor Origin, Pushin.eu, Tangled

  • orgs.block: ❌ → ✅ GitHub, Forgejo, Gitea; ❌ → ∅ Bitbucket, Azure DevOps, Cursor Origin, Pushin.eu, Tangled

  • comments.get (commit): ❌ → ✅ GitHub; ❌ → 🧩 GitLab, Bitbucket

  • writes.lock (issue, PR): ❌ → ✅ GitHub, GitLab, Gitea; ❌ → ∅ Bitbucket, Forgejo, Azure DevOps, Cursor Origin, Pushin.eu, Tangled

  • reviews.reply: ❌ → ✅ GitHub, GitLab, Gitea; ❌ → ∅ Forgejo, Tangled

  • threads.closingIssues: ❌ → ✅ GitHub, GitLab

  • threads.closingPullRequests: ❌ → ✅ GitHub, GitLab

  • repos.contributorStats: ❌ → ✅ GitHub

  • users.sponsorable: ❌ → ✅ GitHub

  • comments.get (discussion): ❌ → ✅ GitHub

  • comments.hide (issue, PR, discussion, commit): ❌ → ✅ GitHub; ❌ → ∅ GitLab, Bitbucket, Forgejo, Gitea, Gitee, Azure DevOps, Cursor Origin, Pushin.eu, Tangled

  • writes.lock (discussion): ❌ → ✅ GitHub; ❌ → ∅ Bitbucket, Forgejo, Azure DevOps, Cursor Origin, Pushin.eu, Tangled

  • checks.get: ❌ → ✅ GitHub; ❌ → ∅ Tangled

  • securityAlerts (advisory): ❌ → ✅ GitHub; ❌ → ∅ Tangled

  • writes.comment (PR, issue, commit, discussion): ❌ → ∅ Pushin.eu

  • writes.close (PR, issue, discussion, commit): ❌ → ∅ Pushin.eu

  • writes.reopen (PR, issue, discussion, commit): ❌ → ∅ Pushin.eu

  • checks.thread (PR, issue, discussion, commit): ❌ → ∅ Tangled

  • sources.poll: ❌ → ∅ Bitbucket, Cursor Origin

  • notifications.list: ❌ → ∅ Bitbucket, Cursor Origin

  • reviews.list: ❌ → ∅ Gitee, Tangled

  • comments.edit (PR, issue, commit, discussion): ❌ → ∅ Pushin.eu

  • comments.delete (PR, issue, commit, discussion): ❌ → ∅ Pushin.eu

  • checks.list: ❌ → ∅ Tangled

  • writes.create (issue, discussion, commit): ❌ → ∅ Pushin.eu

  • writes.update (issue, discussion, commit): ❌ → ∅ Pushin.eu

  • writes.requestReview (PR, issue, discussion, commit): ❌ → ∅ Pushin.eu, Tangled

  • checks.report: ❌ → ∅ Tangled

  • reviews.create: ❌ → ∅ Tangled

  • reviews.approve: ❌ → ∅ Tangled

  • notifications.markRead: ❌ → ∅ Bitbucket, Cursor Origin, Pushin.eu

  • webhooks.rotateSecret: ❌ → ∅ Azure DevOps, Pushin.eu, Tangled

  • webhooks.list: ❌ → ∅ Pushin.eu, Tangled

  • webhooks.create: ❌ → ∅ Pushin.eu, Tangled

  • webhooks.update: ❌ → ∅ Pushin.eu, Tangled

  • webhooks.delete: ❌ → ∅ Pushin.eu, Tangled

  • repos.milestones: ❌ → ∅ Bitbucket

  • notifications.markDone: ❌ → ∅ Bitbucket, Cursor Origin, Pushin.eu

  • notifications.unsubscribe: ❌ → ∅ Bitbucket, Cursor Origin, Pushin.eu

  • notifications.unreadCount: ❌ → ∅ Bitbucket, Cursor Origin

  • writes.setMilestone (issue, PR, discussion, commit): ❌ → ∅ Bitbucket, Pushin.eu

  • releases.create: ❌ → ∅ Bitbucket, Cursor Origin, Tangled

  • releases.update: ❌ → ∅ Bitbucket, Cursor Origin, Tangled

  • notifications.markAllRead: ❌ → ∅ Bitbucket, Cursor Origin, Pushin.eu

  • reviews.resolveThread: ❌ → ∅ Forgejo, Gitea, Tangled

  • reviews.submit: ❌ → ∅ Tangled

  • checks.rerun: ❌ → ∅ Forgejo, Gitea, Tangled

  • writes.transfer: ❌ → ∅ Pushin.eu

  • writes.markDuplicate: ❌ → ∅ Pushin.eu

  • securityAlerts (dependency, code scanning, secret): ❌ → ∅ Tangled

  • reactions.list (discussion, commit): ❌ → ∅ Bitbucket

  • notifications.markAllDone: ❌ → ∅ Bitbucket, Cursor Origin, Pushin.eu

  • writes.react (discussion, commit): ❌ → ∅ Bitbucket, Pushin.eu

  • webhooks.deliveries: ❌ → ∅ Bitbucket, Forgejo, Gitea, Gitee, Azure DevOps, Pushin.eu, Tangled

  • webhooks.redeliver: ❌ → ∅ Bitbucket, Forgejo, Gitea, Gitee, Azure DevOps, Pushin.eu, Tangled

  • installations: ❌ → ❔ Cursor Origin

  • writes.lock (commit): ❌ → ∅ Bitbucket, Forgejo, Azure DevOps, Cursor Origin, Pushin.eu, Tangled

  • writes.setLabels (discussion, commit): ❌ → ∅ Bitbucket, Pushin.eu

  • writes.addLabels (discussion, commit): ❌ → ∅ Bitbucket, Pushin.eu

  • writes.removeLabels (discussion, commit): ❌ → ∅ Bitbucket, Pushin.eu

  • writes.setAssignees (discussion, commit): ❌ → ∅ Pushin.eu

Without credentials:

  • contents.file: ❌ → ✅ Tangled
  • contents.tree: ❌ → ✅ Tangled
  • contents.branches: ❌ → ✅ Tangled
  • contents.tags: ❌ → ✅ Tangled
  • contents.resolveRef: ❌ → ✅ Tangled
  • contents.commits: ❌ → ✅ Tangled
  • contents.commit: ❌ → ✅ Tangled
  • contents.compare: ❌ → ✅ Tangled
  • contents.threadCommits: ❌ → ✅ Tangled
  • contents.threadFiles: ❌ → ✅ Tangled
  • repos.labels: ❌ → ∅ Bitbucket; ❌ → ✅ Tangled
  • users.get: ❌ → ✅ Tangled
  • reactions.list (issue, PR): ❌ → ∅ Bitbucket; ❌ → ✅ Tangled
  • repos.collaborators: ❌ → ✅ Tangled
  • repos.byOwner: ❌ → ✅ GitHub, GitLab, Bitbucket, Forgejo, Gitea, Gitee, Azure DevOps, Tangled
  • comments.get (PR): ❌ → ✅ GitHub, Forgejo, Gitea, Azure DevOps; ❌ → ❔ Bitbucket; ❌ → 🧩 Gitee, Pushin.eu, Tangled
  • repos.events: ❌ → ✅ GitHub, GitLab, Forgejo, Gitea, Gitee
  • users.events: ❌ → ✅ GitHub, GitLab, Forgejo, Gitea, Tangled
  • comments.get (issue): ❌ → ❔ GitHub, Azure DevOps; ❌ → ✅ Forgejo, Gitea; ❌ → 🧩 Gitee, Pushin.eu, Tangled
  • repos.templates: ❌ → ✅ GitHub, GitLab, Forgejo, Gitea; ❌ → ∅ Bitbucket, Azure DevOps, Cursor Origin, Pushin.eu, Tangled
  • reviews.get: ❌ → ❔ GitHub, Azure DevOps; ❌ → 🧩 GitLab, Bitbucket; ❌ → ✅ Forgejo, Gitea; ❌ → ∅ Gitee, Tangled
  • repos.contributors: ❌ → ✅ GitHub, GitLab, Gitee
  • ci.job: ❌ → ✅ GitHub; ❌ → 🧩 GitLab, Forgejo; ❌ → ❔ Gitea
  • repos.contributorStats: ❌ → ✅ GitHub
  • checks.get: ❌ → ✅ GitHub; ❌ → ∅ Tangled
  • orgs.teams: ❌ → ✅ GitLab
  • threads.closingIssues: ❌ → ✅ GitLab
  • threads.closingPullRequests: ❌ → ✅ GitLab
  • repos.permissionFor: ❌ → ✅ Tangled
  • sources.webhook: ❌ → ∅ Pushin.eu
  • reviews.list: ❌ → ∅ Gitee, Tangled
  • checks.thread (PR, issue, discussion, commit): ❌ → ∅ Tangled
  • checks.list: ❌ → ∅ Tangled
  • releases.list: ❌ → ∅ Bitbucket, Cursor Origin, Tangled
  • releases.get: ❌ → ∅ Bitbucket, Cursor Origin, Tangled
  • releases.latest: ❌ → ∅ Bitbucket, Cursor Origin, Tangled
  • releases.getByTag: ❌ → ∅ Bitbucket, Cursor Origin, Tangled
  • repos.milestones: ❌ → ∅ Bitbucket
  • releases.downloadAsset: ❌ → ∅ Bitbucket, Cursor Origin, Tangled
  • comments.get (commit): ❌ → ❔ GitHub, GitLab, Bitbucket
  • comments.hide (issue, PR, discussion, commit): ❌ → ∅ GitLab, Bitbucket, Forgejo, Gitea, Gitee, Azure DevOps, Cursor Origin, Pushin.eu, Tangled
  • sources.poll: ❌ → ∅ Bitbucket, Cursor Origin
  • repos.createLabel: ❌ → ∅ Bitbucket
  • users.block: ❌ → ∅ Bitbucket, Azure DevOps, Cursor Origin, Pushin.eu, Tangled
  • orgs.block: ❌ → ∅ Bitbucket, Azure DevOps, Cursor Origin, Pushin.eu, Tangled
  • reactions.list (discussion, commit): ❌ → ∅ Bitbucket
  • notifications.list: ❌ → ∅ Bitbucket, Cursor Origin
  • notifications.markRead: ❌ → ∅ Bitbucket, Cursor Origin, Pushin.eu
  • notifications.markDone: ❌ → ∅ Bitbucket, Cursor Origin, Pushin.eu
  • notifications.unsubscribe: ❌ → ∅ Bitbucket, Cursor Origin, Pushin.eu
  • notifications.markAllRead: ❌ → ∅ Bitbucket, Cursor Origin, Pushin.eu
  • notifications.markAllDone: ❌ → ∅ Bitbucket, Cursor Origin, Pushin.eu
  • notifications.unreadCount: ❌ → ∅ Bitbucket, Cursor Origin
  • writes.lock (issue, PR, discussion, commit): ❌ → ∅ Bitbucket, Forgejo, Azure DevOps, Cursor Origin, Pushin.eu, Tangled
  • writes.setLabels (issue, PR, discussion, commit): ❌ → ∅ Bitbucket, Pushin.eu
  • writes.addLabels (issue, PR, discussion, commit): ❌ → ∅ Bitbucket, Pushin.eu
  • writes.removeLabels (issue, PR, discussion, commit): ❌ → ∅ Bitbucket, Pushin.eu
  • writes.setMilestone (issue, PR, discussion, commit): ❌ → ∅ Bitbucket, Pushin.eu
  • writes.react (issue, PR, discussion, commit): ❌ → ∅ Bitbucket, Pushin.eu
  • writes.updateBranch: ❌ → ∅ Bitbucket, Azure DevOps, Cursor Origin, Pushin.eu, Tangled
  • releases.create: ❌ → ∅ Bitbucket, Cursor Origin, Tangled
  • releases.update: ❌ → ∅ Bitbucket, Cursor Origin, Tangled
  • webhooks.deliveries: ❌ → ∅ Bitbucket, Forgejo, Gitea, Gitee, Azure DevOps, Pushin.eu, Tangled
  • webhooks.redeliver: ❌ → ∅ Bitbucket, Forgejo, Gitea, Gitee, Azure DevOps, Pushin.eu, Tangled
  • checks.rerun: ❌ → ∅ Forgejo, Gitea, Tangled
  • reviews.reply: ❌ → ∅ Forgejo, Tangled
  • reviews.resolveThread: ❌ → ∅ Forgejo, Gitea, Tangled
  • webhooks.rotateSecret: ❌ → ∅ Azure DevOps, Pushin.eu, Tangled
  • comments.edit (issue, PR, discussion, commit): ❌ → ∅ Pushin.eu
  • comments.delete (issue, PR, discussion, commit): ❌ → ∅ Pushin.eu
  • writes.comment (issue, PR, discussion, commit): ❌ → ∅ Pushin.eu
  • writes.close (issue, PR, discussion, commit): ❌ → ∅ Pushin.eu
  • writes.reopen (issue, PR, discussion, commit): ❌ → ∅ Pushin.eu
  • writes.create (issue, PR, discussion, commit): ❌ → ∅ Pushin.eu
  • writes.update (issue, PR, discussion, commit): ❌ → ∅ Pushin.eu
  • writes.setAssignees (issue, PR, discussion, commit): ❌ → ∅ Pushin.eu
  • writes.requestReview (issue, PR, discussion, commit): ❌ → ∅ Pushin.eu, Tangled
  • writes.merge: ❌ → ∅ Pushin.eu
  • writes.transfer: ❌ → ∅ Pushin.eu
  • writes.markDuplicate: ❌ → ∅ Pushin.eu
  • webhooks.list: ❌ → ∅ Pushin.eu, Tangled
  • webhooks.create: ❌ → ∅ Pushin.eu, Tangled
  • webhooks.update: ❌ → ∅ Pushin.eu, Tangled
  • webhooks.delete: ❌ → ∅ Pushin.eu, Tangled
  • checks.report: ❌ → ∅ Tangled
  • reviews.create: ❌ → ∅ Tangled
  • reviews.submit: ❌ → ∅ Tangled
  • reviews.approve: ❌ → ∅ Tangled
  • securityAlerts (dependency, code scanning, secret, advisory): ❌ → ∅ Tangled

🟦 verified · 🟩 newly verified · 🟨 changed · 🟥 no longer verified · ⬜ not verified · 🔓 same without credentials

✅ native · 🧪 experimental · 🧩 emulated · ❔ unverified · ∅ not applicable · ❌ not available

👉 Changelog

compare changes

🚀 Enhancements

  • pushin: add more pushin capabilities (#222)
  • ⚠️ add namespaceRef() and identify namespace refs by kind alone (f516c7ab)
  • pushin: add support for releases (#198)
  • add ci.rerunFailed() and Check.run + fix check permissions (#214)
  • add client-free forges/web entry (#213)
  • add parseReferences() to read references in text (#211)
  • support issue types (#207)
  • ⚠️ settle verb names + give commits their own namespace (#203)
  • sourcehut: add raw web url (#206)
  • ⚠️ simplify the public API (#202)
  • add not_applicable to disambiguate "not supported" vs. "doesn't actually exist" (#168)
  • add a Sourcehut provider (#167)
  • add conversation locking, comment hiding and account blocking (85cff3fe)
  • github: list repository security advisories as advisory alerts (11e3f121)
  • add threads.closingIssues() and threads.closingPullRequests() (95a4d41c)
  • add threads.updateBranch() (a31421d0)
  • add owner filter to search.threads() (#200)
  • ⚠️ add thread snapshots, more event kinds + fill dropped event detail (#189)
  • add scope hints, latestComment and authorAssociation (#188)
  • ⚠️ remove Thread.readState (#187)
  • fake: apply list filters, seed security alerts and add as(login) (#186)
  • github: honour list filters and poll intervals + report review request times (#183)
  • add repos.templates (#180)
  • ⚠️ resolve writes with what they changed + type returned refs as resolved (#179)
  • ⚠️ read rate limit budgets without a request + make first pages conditional (#178)
  • ⚠️ add affectedKeys(), payload-dated events + review identity (#176)
  • make writes safe to retry + let forges/fake fail for queue tests (#175)
  • read the IETF ratelimit field (60e85e7b)
  • report rate limits with onRateLimit (c5fde2e5)
  • limit the commits and files of contents.compare() (#171)
  • add mergedAt and mergedBy to threads (#170)
  • add stargazers, watchers, forks section URLs to urlFor() (#166)
  • commit file changes to a branch (#159)
  • add repository and account activity feeds (#153)
  • declare + document capabilities per kind of credential (#123)
  • add Cloudflare Artifacts provider (#147)
  • github: add graphql() for queries and mutations (#122)
  • github: add repo contributor stats over time (#146)
  • add orgs.teams, orgs.teamMembers (#145)
  • parse file web URLs into a path and revision (#144)
  • github: add users.sponsorable (#140)
  • tangled: add stars and forks (#143)
  • gitee,github,gitlab: add repos.contributors (#141)
  • add total count to page results (#142)
  • add state, labels, assignees to update() (#136)
  • add threads.replyToReviewComment() (#126)
  • expose webOrigin on providers (#129)
  • add repository section targets to urlFor() (#120)
  • add raw file and commit targets to urlFor() (#119)
  • tangled: read contents, collaborators, write labels, reactions + open/merge PRS (#114)
  • add as to releases.downloadAsset() to read bytes or text (221adf98)
  • add repoRef() to build a repo ref from owner/name (7a165b86)
  • report whether repos.addCollaborator() added or invited the account (c2f2593b)
  • add repos.byOwner() to list repos of a user, org or group (#103)
  • pushin: add missing watchers_count (#115)
  • add merge defaults to Repo (#99)
  • add single-item getters for comments, reviews, checks and ci jobs (#98)
  • github,gitlab,gitea,forgejo,cursor-origin: add PR diff stats to Thread (#97)

🔥 Performance

  • github: share installation token exchange between concurrent requests (#195)
  • gitlab: read the latest release with per_page=1 (#92)

🩹 Fixes

  • tangled: declare anonymous pull threads.getComment as unverified (32a25595)
  • gitee: declare users.events as verified (52427c4d)
  • github: re-run the job of an Actions check run that an app cannot re-request (c268fe26)
  • parse tag, compare + PR commit URLs (#210)
  • sourcehut: misc. minor follow-ups (#208)
  • fake: don't reuse thread numbers, comment ids or webhook ids (#197)
  • testing: match nested GraphQL variables + let overrides win in fixtureFetch (#196)
  • github: read a commit made with an empty author email (#194)
  • ⚠️ forgejo: emulate markDone as markRead (#184)
  • do not leak secret length in timingSafeEqual (1dbcfa79)
  • gitee: leave aheadBy unset for a truncated comparison (#174)
  • github: report retries and rate limits of the installation token exchange (43c044d4)
  • bitbucket: read the rate limit list and relative reset (1e5234a7)
  • pushin: date merged pull requests as closed (#173)
  • github: report moved branches with a 409 (#169)
  • name the cause of a failed connection (099700c9)
  • tangled: digest the feed page into its etag (#161)
  • tangled: date undated feed records with now (#158)
  • forgejo: tell feed tags by the activity type (#157)
  • github: warn on throttled feed reads (#155)
  • narrow factory forge/experimental and forges.get() (#135)
  • type urlFor() repo links as string for forges with a website (#134)
  • type webOrigin as string for forges with a website (#132)
  • github: send pull and push when adding a read or write collaborator (1d90d38f)
  • anchor link header regex to avoid polynomial backtracking (28f200c4)

💅 Refactors

  • ⚠️ rename sources.subscribe() to sources.stream() (26b56c94)
  • ⚠️ rename thread input and search query types (9f84633e)
  • ⚠️ stop exporting provider internals from subpaths (58f0dd53)
  • ⚠️ kit: rename WebLinks.origin to baseUrl (#160)

📖 Documentation

  • keep header links clear of the logo on narrow screens (948a4ab8)
  • add Discord link (#221)
  • mark gitee users.events as conditional (d4afd56a)
  • add support for auth and writes to API explorer (#199)
  • mention Sourcehut in a few more places (#205)
  • inline display font faces, drop dup preload + defer search (f2f03bd8)
  • count push commits with commitCount (#162)
  • explain what server builds that trace dependencies include (76ea33d1)
  • describe which id Actor.id holds on each forge (500021d0)

🏡 Chore

  • log more info on record-fixtures failures (#165)
  • small fixes to testing harness (#163)
  • add partial write support for recordings (#154)
  • add Cloudflare Artifacts provider icon (d83a70c8)
  • remove installed-check dev dependency (0cb7fea9)
  • add security policy (#87)

✅ Tests

  • tangled: re-record reads (1d83716f)
  • pushin: re-record reads (b5cf66a1)
  • gitlab: re-record reads (0e1d5d5c)
  • github: re-record reads (09d6ffbf)
  • gitee: re-record reads (2d8db536)
  • gitea: re-record reads (deb83b10)
  • forgejo: re-record reads (7c9ee1f2)
  • bitbucket: re-record reads (7265808f)
  • azure-devops: re-record reads (67a99133)
  • github: read expected values from the recorded fixtures (a5fe9d80)
  • record live fixtures (16816ed6)
  • stabilise write recordings for azure devops, gitea and gitlab (663001e8)
  • record webhooks only from the scratch repository (058c72a9)
  • keep write recordings stable across runs (#138)
  • record fixtures per step (#125)
  • re-record github writes (28b2d9f3)
  • redact gitlab tokens from recorded fixtures (466e4139)

🤖 CI

  • record fixtures for a branch, and write steps with only (#156)
  • show capability changes per kind of credential (6c00ff88)
  • report bundle size changes on pull requests (4590210d)
  • log the ids renamed in write recordings (2ddc5a7b)
  • apply a single forge's recording (49316310)
  • write fixture pull request bodies more plainly (5a8b6b0d)
  • re-record fixtures on a schedule (#127)
  • describe capability changes in release PRs (f7b36e3e)
  • describe capability changes in PR descriptions (#124)
  • pin pnpm/setup version comment (920ca247)

🎉 New Contributors

  • Wilco (@WilcoSp)
  • github-actions[bot] (@github-actions[bot])
  • Max (@onmax)

❤️ Contributors