Repository navigation
Releases: avitsrimer/bitbucket-cli
Release list
Version 0.7.0
New Features
- publish the bitbucket-cli skill as a plugin marketplace #84 @avitsrimer
Bug Fixes
- detect bitbucket remotes behind ssh host aliases #83 @avitsrimer
- bound pull request id shell completion #82 @avitsrimer
- decode merge queue targets and report their target branch #81 @avitsrimer
v0.6.3
Changelog
- 4200bfa fix: rename cask token to bitbucket-cli to avoid homebrew/cask collision
v0.6.2
Changelog
- 3c572df fix: emit postflight_steps instead of deprecated postflight in cask
v0.6.1
Bug Fixes
- make profile authorize open a browser instead of hanging #80 @avitsrimer
- mask stored secrets in json and yaml output unless -o was explicit #79 @avitsrimer
v0.6.0
New Features
- add --ready/--draft to update and surface draft on get/list #78 @avitsrimer
Notes
bb pullrequest update <id> --readyclears a pull request's draft status;--draftsets it. The two are mutually exclusive and combine with every otherupdateflag in one request.draftis now a field on pull requests: always present in-o json|yaml, a default table column onget,updateandcreate, and available via--columns draftonlist(--sort draftonlist).- Output change: the default
get/update/createcolumns gain a trailingdraftfield. Positional-o csv/-o tsvparsers should pin their columns with--columns. - Reinstall the Claude skill after upgrading (
bb install-skill) to pick up the new flags.
v0.5.0
Breaking Changes
bb pullrequest comment create/update --line Nnow anchors the comment to lineNof the new (head) version of the file, matching how users actually compute line numbers — against the PR's head, not its base. Previously--linewas sent as the API'sinline.from, which anchors to the old (base) side, so comments landed offset by the net insertions/deletions above that point #77--tois removed. Its documented "range end" semantics never matched a real Bitbucket API field, so keeping it would have meant silently flipping its side for any script that relied on it — a hard "unknown flag" error is the safer failure mode #77
Migration
- Anchoring to a line in the file as it exists at the PR's head: use
--line Nas before — it now points at the right line - Anchoring to a line in the file as it existed in the base branch (e.g. commenting on a deleted line): use
--from N, the explicit old-side anchor - Any script passing
--toneeds to drop it; there is no replacement flag, since old-side and new-side anchoring are both already covered by--from/--line
Fixes
FileAnchor.String()(used bycomment list's file column) now renders old-side and new-side anchors distinguishably:path:1040for the new side,path:990(old)for the old side #77
v0.4.0
New Features
bb pullrequest list --author <id>and--mine— list pull requests across every repository of a workspace in a single request, replacing a shell loop overbb repo list. Author mode resolves no repository at all, so it works from any directory as long as the workspace resolves #76- new
repositorycolumn on pull request listings: part of the default column set in author mode, and available everywhere through--columns repositoryand--sort repository#76
Improvements
- the
idandrepositorysort comparators now tie-break on each other, giving listings a total order. Pull request ids repeat across repositories, so--sort repositoryor--sort updated_onis the useful choice in author mode; the default remains+id#76
Note on author identifiers
--author accepts a username, a UUID in curly braces ('{...}' — quote it so the shell keeps the braces), or an Atlassian account ID. There is no me sentinel; use --mine for your own pull requests. Workspace member nicknames, shown in the Name column of bb workspace members, are not usernames and usually resolve to nothing — the ID column of that command carries the UUID this flag wants. An unresolvable identifier may come back as either a 404 or an empty listing, so an empty result is not proof the author has no matching pull requests.
Author mode is workspace-wide, so an explicitly passed --repository is rejected rather than silently ignored, and it is mutually exclusive with --commit. The endpoint also needs workspace-level access: a Repository Access Token that works for repository-scoped list returns 403 here.
v0.3.0
New Features
bb pullrequest create --reviewer none— create a PR with no reviewers, suppressing the automatic default-reviewer resolution #72
Bug Fixes
--reviewer all/--add-reviewer allno longer adds the PR author as a reviewer #74
Improvements
- two dependencies removed with byte-identical output guarantees: the table renderer is now local code (replacing an unmaintained 2018 fork) and all
gildas/go-coreusage is ported in-tree — module graph shrunk from 38 to 31 #69 #70 #71 - README: new Token permissions section (exact scopes per command group, narrow-token friendly), documented
--draftonpr create, intended-audience note #73 #75
Note on cache tuning
BITBUCKET_CLI_CACHE_DURATION now accepts Go duration strings only (30s, 5m); ISO-8601 forms (PT30S) are no longer parsed and fall back to the 5-minute default.
v0.2.0
Breaking change
bb pullrequest merge now requires an interactive y/N confirmation from a human — there is deliberately NO --force and no other bypass. Piped or /dev/null stdin errors out (merging requires an interactive terminal); scripts and agents must hand the merge to a user. --dry-run is unchanged: full preflight, no prompt, no write.
New Features
- require interactive confirmation for
pullrequest merge#66
Bug Fixes
- fail closed on any empty stdin read at the merge prompt (EOF, EIO, …), never a silent "Merge canceled" #67
Improvements
- document the full stdin contract for merge and the softer trigger/stop
/dev/nullbehavior #68
v0.1.0
First release of bb — an opinionated, macOS-first CLI for Bitbucket Cloud, forked from gildas/bitbucket-cli and substantially reworked. The fork is permanently detached from upstream; versioning starts fresh at v0.1.0.
Command surface
pullrequest(pr) — list/get/create/update/merge/decline/approve/request-changes, diff/patch/commits/activities, plus comments and tasks (positional PR ids)pipeline— list/get/trigger/stop (y/N confirmation,--forceto skip), andpipeline stepget/list/logs/report/cases with step name→UUID resolutionrepository,workspace,commit,branch— read-only surface, plusrepo cloneartifact— list/downloadprofile/user— authentication (app password, access token, OAuth client), secrets stored in the macOS Keychain
Highlights
- Works with narrowly-scoped workspace/repository tokens — nothing demands
read:workspace - Full-preflight
--dry-runon every mutating command: targets resolved via real GETs, the resolved payload echoed, no write ever sent --comment-file/--description-file(-= stdin) for markdown bodies without shell-quoting hazards- Secrets masked in table output; explicit
-o json|yamlis the scripting path bb install-skillinstalls an embedded Claude agent skill (to~/.claudeor$CLAUDE_CONFIG_DIR)- Dynamic shell completion throughout
Install
brew tap avitsrimer/apps
brew install --cask bbdarwin/arm64 only.