# Changelog All notable changes to this project will be documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and adheres to [Semantic Versioning](https://semver.org/). ## [Unreleased] ### Security - `BKT_TOKEN` is no longer sent to a host other than `BKT_HOST`. With an active context for another host, `bkt` used to ignore `BKT_HOST` and send the token to the context's host. The `BKT_HOST` + `BKT_TOKEN` pair now wins over the active context, and an explicit `--context` or `--host` for another host is refused. - `bkt api` and every other request refuse an absolute URL for another host, port, or scheme. `bkt api https://other.example.com/x` used to send the stored token to that host. ### Fixed - A config save (for example `bkt context create`) no longer deletes a legacy plaintext token from `config.yml` before `bkt auth login` has moved it to the keychain. - The browser login no longer hangs for two seconds, or leaks a handler, when the callback page is reloaded; token and user-info calls time out after 30 seconds instead of waiting forever while they hold the refresh lock. - `bkt auth status` under `BKT_TOKEN` shows the saved auth method (for example `bearer`) when `BKT_AUTH_METHOD` is unset. It used to print `basic`. - `bkt skill install` and `bkt skill update` keep the body of a SKILL.md whose frontmatter is empty (`---` then `---`). Before, text up to the next `---` rule was lost or a second frontmatter block was written. - `bkt skill update monalisa/triage` accepts the `namespace/name` shown by `skill list`. It used to fail with "none of the specified skills are installed". - `bkt skill update` reports `! : not found in ` and exits non-zero for a skill that no longer exists in its repository. It used to print "All skills are up to date." and exit 0. - A 429 or 503 with a `Retry-After` longer than the request deadline returns the HTTP error at once. It used to wait and report "context deadline exceeded". - Docs name the per-OS config directory (macOS and Windows differ from `~/.config/bkt`); the security issue link points at the security policy. - Ctrl-C or SIGTERM makes bkt exit 130 with no error text. `pipeline run --wait` and `pr checks --wait` used to exit 0, and other commands printed "Error: context canceled" and exited 1. - `bkt extension exec` exits with the extension's own exit code and no extra message. It used to print "Error: exit status N" and exit 1. - `bkt pipeline run --var LIST=a,b` keeps the comma in the value. It used to fail with `invalid variable "b"`. - `bkt status rate-limit` prints "No rate-limit headers returned by HOST." when the server sends none. It used to print "Limit: 0 / Remaining: 0". - Data Center `status commit`, `status pr`, `repo list` and `repo view` retry transient failures like the other commands. They used to make one attempt. - `bkt pr create --source BRANCH` builds the default title from BRANCH's commits. It used to read the current HEAD. - Bitbucket Cloud `bkt pr view` lists reviewers, as the Data Center view does. - `--json` prints `[]` for empty hosts, contexts, repositories, default reviewers and variables. It used to print `null`. - `bkt repo downloads upload` rejects two files with the same base name before uploading. The second used to silently replace the first. - `bkt variable set --env-file` applies variables in file order, and a failure names the variables already applied. - `bkt pr checks` without `--wait` reports a timed-out status request as an error. It used to print "No builds found." and exit 0. - Data Center `bkt pr list --mine` on a repository asks Bitbucket for the author's pull requests, so `--limit` applies to them. It used to filter the newest `--limit` pull requests of all authors. - `bkt mcp serve` sends a `BKT_TOKEN` override of an OAuth-saved Cloud host with basic auth, as every other command does. It used to send it as a bearer token, and every tool failed with `auth_failed`. - `bkt variable set NAME` drops a CRLF line ending from a piped value. The stored value used to keep the `\r`. - `bkt skill update` no longer treats the skills a repository authors under `skills/` as installed skills that lack metadata. - A config entry with no fields (`contexts: {work: }`) no longer crashes every command. - `bkt extension remove .` is rejected. It used to delete every installed extension. - `bkt extension exec --flag` forwards flags to the extension. It used to fail with "unknown flag". - A Data Center remote under a context path (`https://host/bitbucket/scm/PROJ/repo.git`) resolves to the right project and repository. - A blank `PAGER` no longer crashes commands that page their output. - Help examples: `--json` replaces a `--output json` flag that does not exist (`auth status`, `context list`, `status`, `perms`, `admin logging get`), `pr create` uses `--title`, the Cloud `context create` examples use `--host api.bitbucket.org`, and the `api` example drops a `--workspace` flag that does not exist. ## [0.38.1] - 2026-11-09 ### Fixed - Fetch newly created release tags into the packaging checkout before GoReleaser runs. v0.38.0 created its tag but stopped before publishing binaries because GoReleaser selected v0.37.0. This release publishes the mergeability command and Cloud state-filtering fixes documented under 0.38.0 below. ## [0.38.0] - 2026-11-09 ### Added - `bkt pr mergeability ` reports read-only Bitbucket Cloud merge eligibility, conflicts, blocking checks, and unknown results in text or structured output (#382). - Maintainers can cut a release from GitHub Actions (`release-request.yml`) instead of running `scripts/release.sh` locally. ### Fixed - Bitbucket Cloud repository-scoped PR lists honor `--state` even when the API ignores it with `--reviewer` or `--mine`, filtering before pagination limits (#380). - Bitbucket Cloud `bkt pr list --mine` honors `--state` even when the workspace API returns PRs in other states, and applies `--limit` to matching PRs (#377). ## [0.37.0] - 2026-10-25 ### Changed - **Log in again once:** run `bkt auth login https://bitbucket.org --kind cloud --web`. bkt's Bitbucket Cloud OAuth consumer now grants Repositories Admin, so `bkt repo create` works with browser login; before, it failed with "credentials lack one or more required privilege scopes". It also no longer grants unused project-write, workspace-membership, and issue permissions. Bitbucket expires every token issued before this change. ### Removed - `bkt issue` now explains that Atlassian removed Bitbucket Cloud Issues on 20 August 2026 and exits, instead of calling an API that answers 410 Gone. The command is hidden from help; track issues in Jira. ## [0.36.0] - 2026-10-22 ### Fixed - Bitbucket Cloud browser login (`bkt auth login --kind cloud --web`) and OAuth token refresh work in every build, including Homebrew core, `go install`, and Nix. bkt's OAuth consumer now ships in source, as the GitHub CLI and Git Credential Manager ship theirs, instead of only in release binaries. ### Changed - `BKT_OAUTH_CLIENT_ID` and `BKT_OAUTH_CLIENT_SECRET` now select your own OAuth consumer over bkt's, and must be set together. Before, release binaries ignored them. A stored OAuth token refreshes with the consumer that issued it. ## [0.35.2] - 2026-10-20 ### Fixed - macOS release binaries run on macOS 13 and later again. Releases built on the `macos-latest` runner required macOS 26, so older Macs refused to start `bkt`. ### Changed - macOS release binaries are signed with a Developer ID (Aviv Sinai, 93ZUZ2PTM9) and notarized by Apple. After this upgrade, macOS asks for Keychain access one last time; later upgrades keep the approval. ## [0.35.1] - 2026-10-20 ### Fixed - Repository auto-detection treats `ssh.bitbucket.org` remotes as Bitbucket Cloud. Bitbucket Cloud moves SSH to this hostname on 12 November 2026 (#357). ### Changed - The release workflow can sign and notarize macOS binaries with a Developer ID. This release is still signed ad-hoc, so macOS asks again for Keychain access after `brew upgrade`. A Developer ID release will key the Keychain grant to the team ID, so one "Always Allow" then survives upgrades. - Build with `golang.org/x/sys` 0.49 and `golang.org/x/term` 0.47. ## [0.35.0] - 2026-10-18 ### Added - Repository auto-detection resolves SSH host aliases through `ssh -G`, as `gh` does, so remotes such as `git@work.bitbucket.org:team/repo.git` map to their Bitbucket host (#344). ## [0.34.0] - 2026-10-15 ### Added - `bkt auth login --with-token` reads the token from stdin, so a script signs in without the token showing in the process list. ## [0.33.1] - 2026-10-13 ### Added - `bkt` is in Homebrew core: `brew install bitbucket-cli`. The `avivsinai/tap` formula remains the official binary with Bitbucket Cloud OAuth built in. ### Fixed - `bkt auth doctor` and the README name the right Homebrew upgrade command (`brew upgrade bitbucket-cli`). ## [0.33.0] - 2026-10-11 ### Added - `bkt repo downloads upload ...` uploads files to a Bitbucket Cloud repository's Downloads and prints their URLs; `bkt repo downloads list` lists them (#331). - `bkt pr comments view ` shows the thread that contains a comment or reply: root comment, replies, and inline anchor on Data Center and Cloud, plus a few lines of diff around the anchored line on Data Center (#326). - `BKT_KEYRING_COLLECTION` environment variable overrides the Secret Service collection used by the keyring backend on Linux. Users whose Secret Service provider creates a separately encrypted wallet per collection (for example KWallet) can set it to the provider's default collection name so `bkt` reuses the session's already-unlocked wallet instead of prompting on every invocation. When unset, behavior is unchanged: the collection falls back to the `bkt` service name as before. The variable is ignored on macOS and Windows. Packagers may bake the value in via the `github.com/avivsinai/bitbucket-cli/internal/secret.defaultKeyringCollection` ldflags variable; the env var wins when set (#327). ### Changed - Building from source now requires Go 1.26 (`go.mod` declares `go 1.26.0`), with `golang.org/x/sys` 0.48, `golang.org/x/term` 0.46, and the MCP Go SDK 1.8.0 (#333). ### Fixed - `bkt repo downloads upload` and `bkt issue attachment upload` stream files to Bitbucket instead of buffering the whole multipart body in memory, so large release artifacts no longer need as much RAM as their size. Uploads still send an exact `Content-Length` and are retried on 429 and token refresh as before. - `bkt repo downloads upload` prints each URL as soon as its file is uploaded; when a later file fails, the URLs of files already uploaded are still reported (in `--json` output too) before the command exits with the error. - Data Center pull request comments retain the activities endpoint's inline anchor: `pr comments --details` shows file, line, and orphaned status, JSON includes anchor metadata, and the MCP `bkt_list_pull_request_comments` tool returns path and line (#326). ## [0.32.1] - 2026-09-04 ### Added - Carried forward from the unpublished `v0.32.0` tag: `bkt skill` now supports installing, listing, previewing, updating, and publishing Agent Skills hosted in Bitbucket Cloud or Data Center, plus Cloud workspace skill search. - `bkt pipeline run` can select branch and custom pipeline definitions with `--selector-type` and `--selector-pattern`. ### Fixed - Local skill discovery ignores Git metadata, so concurrent Git maintenance no longer causes `bkt skill publish` to fail while walking `.git`. ## [0.32.0] - 2026-09-04 ### Added - `bkt skill` installs and manages [Agent Skills](https://agentskills.io/specification) hosted in Bitbucket repositories, mirroring GitHub CLI's `gh skill` (`install`, `list`, `preview`, `update`). Repositories are addressed as `WORKSPACE/REPO` (Cloud), `PROJECT/REPO` (Data Center), or a Bitbucket URL, and are read with the active context's credentials. Skill discovery, the agent host table, the flat on-disk layout, and the `~/.agents/.skill-lock.json` entry match `gh skill`; installed skills record their origin under `metadata.bitbucket-*`. Bitbucket has no per-directory tree hash, so update detection uses the latest commit that touched the skill directory, and "latest" resolves to the newest tag, falling back to the default branch. (#310) - `bkt skill publish` validates a repository's skills against the Agent Skills specification (naming rules, required frontmatter, `allowed-tools` as a string, no committed install metadata) and reports the spec's recommendations as warnings. `--fix` strips committed install metadata, `--dry-run` validates only, and `--tag` marks the current commit as a released version. Bitbucket has no releases, so publishing a version means creating a tag, which is what `bkt skill install` resolves to when no version is requested. (#310) - `bkt pipeline run` can select a pipeline definition with `--selector-type` and `--selector-pattern`, including named custom pipelines on a branch. - Data Center `bkt repo list` and `bkt repo view` include the repository `archived` flag in structured output (always present, including `false`). Human `repo view` prints `Archived: true|false`; archived `repo list` rows get an `(archived)` suffix. Bitbucket Cloud is unchanged. - `bkt skill search` searches `SKILL.md` files across a Bitbucket Cloud workspace, with human and structured output. Data Center reports that the command is unsupported because it has no public workspace code-search API. Atlassian will deprecate the Cloud endpoint on November 1, 2026. (#310) ### Changed - Short skill versions now resolve tags before branches, so a tag wins when a branch shares its name. ### Fixed - `bkt skill install` stages files in a temporary sibling of the skill directory within the install root, then replaces the destination only on success, so failed installs no longer leave partial skill directories. - `bkt skill publish` refuses to tag while the published files have uncommitted changes, and addresses the repository by its full host URL. - `bkt skill update` emits one structured document without human success text, and returns an error when any remote update check fails instead of reporting every skill as up to date. - Skill lock updates preserve unrelated entries and unknown JSON fields, and refuse to overwrite an existing malformed or incompatible lock file. ## [0.31.1] - 2026-08-21 ### Added - Headless Bitbucket Cloud authentication now supports repository, project, and workspace access tokens through `BKT_AUTH_METHOD=bearer` without requiring `BKT_USERNAME`. ### Changed - The README first screen now shows Homebrew install plus a recorded `bkt --help` session (`docs/demo.gif` and `docs/demo.svg`). No credentials are used. ### Fixed - Windows Cloud `--web` login now stores OAuth credentials that exceed Windows Credential Manager's 2560-byte blob limit by splitting the secret across multiple WinCred items. Token refresh write-back uses the same store. The default Windows path stays WinCred; oversized writes never fall back to the encrypted file backend. (#298) ## [0.31.0] - 2026-08-12 ### Added - `bkt project reviewer-groups list` lists the reviewer groups defined in a Bitbucket Data Center project's settings, including each group's members. The project is resolved from the active context or `--project`. (#290) ## [0.30.1] - 2026-08-05 ### Added - Documented WinGet installation (`winget install AvivSinai.Bitbucket-CLI`) in the README now that the package is available in the catalog. ### Fixed - Creating a Bitbucket Data Center repository with a default branch no longer reports a false 404 after the repository has already been created. - ChatGPT GitHub imports no longer fail on unsupported skill symlinks; the Claude and agent skill paths are now committed directory mirrors. (#279) - Corrected support and governance docs to point at GitHub Issues: removed a reference to a non-existent community Slack and to GitHub Discussions, which are not enabled for this repository. - Removed an accidentally committed `promptcode_bitbucket-cli-full.md` export and ignored `promptcode_*.md` so generated dumps stay out of version control. ## [0.30.0] - 2026-07-22 ### Added - `bkt pr list --reviewer` lists pull requests where the authenticated user is a requested reviewer. Data Center supports dashboard-wide and repository-scoped views; Bitbucket Cloud supports repository-scoped filtering and requires a repository from the active context or `--repo`. `--mine` and `--reviewer` are mutually exclusive. (#253) - `bkt pr create --source-project` and `--source-repo` create Data Center pull requests from a fork repository into an independent destination repository, including cross-repository default-reviewer resolution. The flags are rejected on Bitbucket Cloud. (#268) - Release automation can generate WinGet manifests for `AvivSinai.Bitbucket-CLI` and submit updates to `microsoft/winget-pkgs` after the package's initial catalog entry is accepted. (#246) ### Changed - `make build`, `make clean`, and `make test` now run on Windows GNU Make using cmd.exe-pinned recipes and Windows-safe test helpers, while keeping the existing Unix build and release script paths intact. A `windows-latest` CI job verifies the Windows build and test path. ### Fixed - Bitbucket API errors now surface actionable `errors[].details[]` text and additional `errors[]` entries while preserving the existing first-line status/message format. LF/CRLF boundary blank lines no longer add stray stderr lines. (#269) ## [0.29.0] - 2026-07-21 ### Added - `bkt mcp serve` (experimental): a read-only Model Context Protocol server over stdio for AI agents, exposing Bitbucket Data Center and Cloud through a single interface and reusing your existing `bkt` authentication. The server pins one context resolved at startup — the working directory never changes the target, and the credential is frozen for the process lifetime — and registers nine tools: `bkt_get_context`, repository list/get, pull request listing (repo-scoped with author/reviewer role filters, plus a cross-repo "my pull requests" view), and pull request detail, unified diff, comments, and checks. Role and state filters are applied by Bitbucket before the result limit; list results are bounded with explicit truncation; pull request descriptions, comment bodies, and diffs are size-bounded and tagged as untrusted; errors are redacted and machine-readable; and the tool schemas are frozen by a drift-checked contract. Register with e.g. `claude mcp add bitbucket -- bkt mcp serve`. (#258–#263) - `bkt pipeline view --wait` and `bkt pipeline run --wait` poll a pipeline until it completes, using the same backoff flags (`--interval`, `--max-interval`, `--timeout`) and exit-code contract as `bkt pr checks --wait`: 0 = succeeded, 1 = completed unsuccessfully, 8 = timed out while still running. (#252) ### Fixed - The HTTP client is now safe for concurrent use during OAuth token refresh: credential updates are mutex-protected and simultaneous 401 responses coalesce into a single token refresh instead of racing. (#257) ## [0.28.2] - 2026-06-06 ### Fixed - `bkt pr comment --parent` on Bitbucket Cloud no longer reports success when Bitbucket does not thread the reply under the requested parent. When the created-comment response is available, `bkt` verifies the echoed `parent.id` and returns an actionable error instead of a false "Commented" message. - The HTTP client no longer retries non-idempotent requests (POST/PATCH) on server (5xx) or network errors, preventing duplicate pull request comments when a transient failure occurs after the comment was already created. Rate-limited (429) responses remain retryable for all methods. ## [0.28.1] - 2026-05-30 ### Fixed - `bkt branch create --from` on Bitbucket Data Center no longer wraps commit hashes in `refs/heads/`, so creating a branch from a commit hash works. - `bkt variable set` and `bkt variable delete` on Bitbucket Cloud now reject invalid variable and deployment-environment UUIDs locally instead of calling malformed API endpoints. - `bkt pipeline view` and `bkt pipeline logs` now paginate pipeline steps, so pipelines with many steps are complete and the default log step is the true final step. - `bkt pr merge` on Bitbucket Cloud now gives async merge tasks enough time to finish and reports an actionable "may still be running" message with task and pull request IDs if polling times out. - `bkt pr list --mine` on Bitbucket Cloud now filters by the authenticated user's stable identity (UUID or account ID) instead of an email-shaped username, fixing empty results for API-token logins. - `bkt repo create` now rejects host-specific flags that do not apply, such as `--forkable`, `--default-branch`, `--scm`, and `--project` on Cloud or `--workspace` and `--cloud-project` on Data Center, instead of silently ignoring them. - `bkt pr create --with-default-reviewers`, `bkt pr edit --with-default-reviewers`, and Data Center `bkt repo default-reviewers list --source/--target` now call the effective default reviewers API with repository IDs and branch/tag refs, and decode the direct user response returned by Bitbucket Data Center. ## [0.28.0] - 2026-05-30 ### Added - `bkt pr comments resolve`, `bkt pr comments reopen`, and `bkt pr comments delete` now manage pull request comment threads/comments on Bitbucket Cloud and Data Center. Resolve/reopen require the top-level thread comment ID and support structured output. ### Fixed - `bkt pr comments --state deleted` can now list deleted pull request comments returned by Bitbucket Cloud, making deletion verification explicit. - `bkt pr comments delete` now includes the current comment version required by Bitbucket Data Center delete-comment requests. ## [0.27.1] - 2026-05-29 ### Fixed - Fixed `bkt pipeline view ` and `bkt pipeline logs ` so numeric build numbers use the Bitbucket Cloud build-number lookup without falling through to UUID validation. ## [0.27.0] - 2026-05-29 ### Added - `bkt pr task` now works on Bitbucket Cloud, using its first-class pull request tasks API (`list`, `create`, `complete`, `reopen`). ### Fixed - `bkt pr task` on Bitbucket Data Center no longer calls endpoints that never existed (the old `create`, `complete`, and `reopen` paths returned 404). It now uses the blocker-comments API (Bitbucket Data Center 7.2+); a task request against an older server surfaces a clear hint. On Data Center, tasks and `bkt pr comments --details` overlap by design, since tasks are blocker comments there. ## [0.26.7] - 2026-05-27 ### Fixed - Bitbucket Data Center mutating requests now send `X-Atlassian-Token: no-check`, fixing 403 XSRF failures for first-class commands such as `bkt pr approve` and `bkt pr merge`. - Corrected the `bkt` skill's structured-output example: piping `bkt pr list --json` to `jq '.[].title'` fails because the command returns an object keyed by `pull_requests`, not a bare array. The example now uses `jq '.pull_requests[].title'`. ## [0.26.6] - 2026-05-13 ### Fixed - Bitbucket Cloud pipeline steps now decode `state.result` the same way as pipeline runs, so `bkt pipeline view`, `bkt pipeline view --json`, and `bkt status pipeline` show per-step outcomes (for example `FAILED` vs `SUCCESSFUL`) instead of only `COMPLETED`. ## [0.26.5] - 2026-05-11 ### Fixed - Corrected the Bitbucket Data Center README login example to use `--web-token`, and made `bkt auth login https://bitbucket.org --web` infer Bitbucket Cloud before validating the browser OAuth flow (#194). ## [0.26.4] - 2026-04-27 ### Fixed - Restored zero-config Bitbucket Cloud browser OAuth in official release binaries by embedding the CLI OAuth consumer credentials through release ldflags again. `BKT_OAUTH_CLIENT_ID` and `BKT_OAUTH_CLIENT_SECRET` remain the fallback for source and Nix builds (#189). ## [0.26.3] - 2026-04-26 ### Added - `bkt auth status` now surfaces Cloud OAuth refresh risks, including expired inferred OAuth credentials, missing refresh credentials, and `BKT_TOKEN` overrides as effective basic auth (#184). ### Changed - Cloud authentication now treats explicit `auth_method` values as authoritative, and API-token logins store `auth_method: basic` instead of relying on token-shape guessing (#184). - Cloud OAuth expiry metadata is runtime-only and preflighted before client construction, with recovery guidance pointing to scoped API-token login instead of `auth logout` (#184). - Cloud OAuth login help no longer labels the OAuth browser flow as recommended, keeping scoped API-token login as the zero-config path (#184). ### Fixed - OAuth credential detection now validates the complete stored OAuth blob before treating keychain contents as refreshable OAuth credentials (#184). - Concurrent Cloud OAuth refreshes now serialize behind a per-host file lock and reuse a fresher keychain token when another process already refreshed it (#184). ## [0.26.2] - 2026-04-24 ### Added - `bkt auth doctor [host]` diagnoses macOS Keychain re-prompt issues without reading the stored secret. Reports the binary's signature, Designated Requirement, and whether a Keychain entry is present for the host (#181). ### Fixed - macOS Keychain "Always Allow" now survives `brew upgrade bkt`. The release codesign script pins the Designated Requirement to the bundle identifier (`-r='designated => identifier "…"'`) instead of letting it default to the cdhash, which changes on every build. The previous claim in 0.21.0 that the stable identifier alone preserved approvals was incomplete — without an explicit DR, `codesign` still derived one from the cdhash. (#181) - Token saves on macOS now delete any stale Keychain item before writing, so the new entry is created with the current binary's DR instead of inheriting an ACL from a previous bkt build. Re-run `bkt auth login` once after upgrading to benefit. (#181) - macOS Keychain items created by bkt now set `KeychainTrustApplication` on darwin, so fresh items trust the calling binary at create time instead of prompting on every access. `KeychainAccessibleWhenUnlocked` is set alongside for forward compatibility (currently a no-op on the file-based Keychain path 99designs/keyring uses). (#181) ## [0.26.1] - 2026-04-22 ### Added - Release `.tar.gz` and `.zip` archives now bundle `skills/bkt/` alongside the CLI binary and docs. ### Fixed - Bitbucket Cloud 401 auth failures now explain the most common API-token misconfigurations, including the required Atlassian-account email username and `read:user:bitbucket` scope. ## [0.26.0] - 2026-04-18 ### Added - `bkt pr close` as an alias for `bkt pr decline`, matching `gh`-style command expectations (#160). - `--destination` as a visible alias for `--target` on `bkt pr create`, mutually exclusive with `--target` (#160). - Global `--format json|yaml` flag as an alternative to `--json` / `--yaml`; validated before any mutating subcommand runs (#160). ## [0.25.0] - 2026-04-16 ### Added - `bkt pr decline` now accepts `--comment` / `-m`, plus `--text` and `--body` aliases, to send a decline reason on Bitbucket Cloud and Data Center (#161). - Nix flake support for running and installing `bkt` via `nix run` / `nix profile install`, with CI validation on Linux and macOS (#165). ## [0.24.1] - 2026-04-15 ### Fixed - Release workflow attestation subject collection now avoids Bash-4-only `mapfile`, so macOS runners can finish artifact attestation after GoReleaser publishes a release. ## [0.24.0] - 2026-04-15 ### Added - `bkt pr comments --details` now shows file:line context, resolved/complete status, full comment text, and nested reply indentation for Bitbucket Data Center pull request threads (#110). ### Changed - Bitbucket Cloud OAuth login now layers PKCE (RFC 7636, S256) onto the existing authorization-code flow while preserving the client-secret token exchange Bitbucket still requires (#162). - Release automation now attests published artifacts and tightens release-commit verification before tags are created (#164). ## [0.23.0] - 2026-04-12 ### Added - `bkt pr edit --with-default-reviewers` now works on Bitbucket Cloud and Data Center, merging effective default reviewers with explicit reviewer edits while preserving mixed Cloud reviewer identities (#150). ### Changed - Added pre-commit and CI validation that generated skill rule files and the `SKILL.md` References section stay in sync with the Cobra command tree, with `GO` override support in the verification path (#148). ### Fixed - `bkt pr update` is now an alias for `bkt pr edit`, matching `gh`-style command expectations and `--help` output (#149). ## [0.22.0] - 2026-04-12 ### Added - `bkt auth login --web` browser-based OAuth 2.0 login for Bitbucket Cloud, with keyring-stored short-lived access tokens and automatic refresh on expiry (#152). - `BKT_HOST` + `BKT_TOKEN` env-var-driven headless authentication for CI and containers, so commands can run without a prior `bkt auth login` or `bkt context create` (#138). - Pull request JSON output now includes creation and update timestamps for Cloud and Data Center listings. ### Changed - `bkt pr list` now appends a local creation timestamp column (`YYYY-MM-DD HH:MM`) to text output for Cloud and Data Center listings. ## [0.21.0] - 2026-04-10 ### Added - OAuth 2.0 infrastructure for Cloud login in the new `pkg/oauth` package, plus a `TokenRefresher` hook on `httpx.Client` for transparent 401-driven token refresh. Phase 1 only; login-command wiring is not included yet (#137). - Unit test coverage for `bkt branch` and `bkt branch protect` subcommands (#143). - Unit test coverage for `bkt context` subcommands (#143). - Unit test coverage for `bkt project list` (#144). - Unit test coverage for `bkt webhook` subcommands (#145). ## [0.20.0] - 2026-04-09 ### Added - Deprecation warning on all `bkt issue` subcommands for Bitbucket Cloud contexts, ahead of the August 20, 2026 Issues/Wikis sunset (#139). - Generated per-command skill rule files and rewritten `SKILL.md` via `cmd/docgen` pipeline (#133). - Unit tests for `bkt pr comments` covering Data Center and Cloud code paths, state filtering, and empty results (#140). ## [0.19.0] - 2026-04-07 ### Added - `bkt auth login --auth-method bearer` for Data Center instances that require bearer token authentication instead of basic auth (#97). - `bkt pr create --with-default-reviewers` now works on Bitbucket Cloud, fetching effective default reviewers via the API with UUID-based self-exclusion and deduplication (#127). - `cmd/docgen` skill generator and `make generate-skill` target for auto-generating skill documentation from Cobra command definitions (#131). ### Fixed - Bearer auth propagation to all inline `bbdc.New()` call sites in `repo list`, `repo view`, `status commit`, and `status pr` (#112). ## [0.18.0] - 2026-04-07 ### Added - `bkt pr edit --reviewer` and `--remove-reviewer` flags to add or remove reviewers on existing pull requests for both Data Center and Cloud (#128). - `bkt pr create --body` / `-b` as an alias for `--description`, matching `gh` CLI conventions (#126). - `Long` and `Example` docstrings for all Cobra commands, improving `--help` output and enabling future skill auto-generation (#129). ## [0.17.0] - 2026-04-05 ### Added - `bkt pr publish` and `bkt pr unpublish` commands to toggle draft status on Bitbucket Cloud and Data Center 8.18+ pull requests. Alias: `bkt pr ready` (#122). - `bkt pr create` now outputs the pull request URL on success (#105). - `bkt pr create` defaults `--source` to the current branch and `--target` to the repository default branch, making both flags optional (#116). - Bitbucket Pipelines install section in README with validated `curl | tar` snippet. - Privacy policy at `docs/PRIVACY.md`. - `.scratch/` convention for local working documents (gitignored). ### Fixed - `bkt pr create` now selects the git remote matching the active Bitbucket host instead of defaulting to the first remote (#116). - Deterministic remote name ordering in fallback when multiple remotes match (#116). - Cloud diff tests (`TestCommitDiffCloud`, `TestCommitDiffEmptyCloud`) no longer fail on Bitbucket Pipelines where the CWD has a `bitbucket.org` remote (#119). - Stale credential storage description in `docs/SECURITY.md` updated to reflect OS keychain, `BKT_TOKEN`, and encrypted file backend. - Consolidated skill publishing into the release workflow so it no longer depends on tag-push events that `GITHUB_TOKEN` cannot trigger. - Pinned all GitHub Actions to commit SHAs across every workflow for supply-chain safety. - Added missing `timeout-minutes` and `concurrency` blocks to all workflows. - Standalone publish-skill workflow now accepts `workflow_dispatch` with an explicit `tag` input. - Bitbucket Pipelines Go image updated from 1.24 to 1.25 to match `go.mod`. ## [0.16.4] - 2026-04-02 ### Fixed - Passed the temp release-notes path directly to GoReleaser so GitHub Actions preserves the `--release-notes` argument during publishing. ## [0.16.3] - 2026-04-02 ### Fixed - Wrote generated GitHub release notes to the runner temp directory so GoReleaser can publish without dirtying the checked-out tree. ## [0.16.2] - 2026-04-02 ### Changed - Switched releases to the shared PR-based `scripts/release.sh` flow, with `CHANGELOG.md` supplying the GitHub release notes and CI creating the version tag only after the merged release commit verifies. ### Fixed - Removed deprecated release shims so there is exactly one supported release entrypoint. ## [0.16.1] - 2026-04-02 ### Added - Pipeline step state and result details in `bkt pipeline view` and `bkt status pipeline` for Bitbucket Cloud, making in-flight step progress visible without `--json`. ### Fixed - Switched Data Center `bkt pr comments` to the pull request activities endpoint so general and inline comments can be listed without the invalid `path` query error. ## [0.15.0] - 2026-04-01 ### Added - `bkt pr create --draft` to create draft pull requests on Bitbucket Cloud and on Bitbucket Data Center 8.18+. - `bkt pr comment --pending` to create pending review comments on Bitbucket Cloud and Bitbucket Data Center. ## [0.14.7] - 2026-04-01 ### Fixed - Keyed manual release rerun concurrency by tag so rerunning one release tag cannot cancel a different release recovery run. ## [0.14.6] - 2026-04-01 ### Fixed - Treated `Version already exists` as success when a skill publish reruns after retrying without an alias, preventing false-negative publish failures on release reruns. ## [0.14.5] - 2026-04-01 ### Changed - Added manual `workflow_dispatch` support for the release workflow so an existing tag can be rerun cleanly when GitHub release automation needs recovery without minting another version. ## [0.14.4] - 2026-04-01 ### Fixed - Serialized macOS keychain reads and writes behind an inter-process lock to prevent prompt storms when multiple `bkt` processes access the same token concurrently. - Ad-hoc signed macOS binaries with the stable identifier `io.github.avivsinai.bitbucket-cli` in both local builds and GoReleaser artifacts so Keychain approvals survive Homebrew upgrades. ## [0.14.3] - 2026-04-01 ### Fixed - Prevented skill publish failures when a skill alias falls outside registry length limits. - Ensured release automation stages optional Codex plugin manifests and verifies skill/plugin metadata versions before publishing or tagging. ### Changed - Added a default-branch marketplace dispatch workflow so plugin updates are announced after merges to `master`. - Updated the Codecov action to v6. ## [0.14.2] - 2026-03-30 ### Changed - Switched skill publishing to a tag-based release flow so binary and skill releases are driven from the same version tag. ## [0.14.1] - 2026-03-29 ### Added - Codex plugin manifest metadata for `bkt`, including interface metadata for marketplace and CLI consumers. ### Changed - Consolidated skill packaging around the shared plugin manifest layout. ### Fixed - Aligned Claude and Codex plugin manifest versions with release tags. ## [0.14.0] - 2026-03-18 ### Added - `bkt pr comment --file --to-line ` and `--from-line ` flags for inline comments on PR diffs. Targets specific lines in the diff: `--to-line` for added/changed lines (new side), `--from-line` for removed lines (old side). Supports both Bitbucket Cloud (`inline` object) and Data Center (`anchor` object) (#86). - `Inline` field on Cloud `PullRequestComment` and `Anchor` field on DC `PullRequestComment` structs, exposing file/line location in `--json` output. ### Changed - Refactored `CommentPullRequest` in both Cloud and DC clients from positional parameters to a `CommentOptions` struct, enabling extensible comment creation. ## [0.13.1] - 2026-03-18 ### Fixed - Rejected half-braced UUID inputs (e.g. `{uuid` or `uuid}`) in `looksLikeUUID`. The regex now requires either both curly braces or neither. ## [0.13.0] - 2026-03-18 ### Added - UUID-based reviewer identification in `bkt pr create --reviewer`. Automatically detects canonical UUIDs and sends them with the `uuid` key to Bitbucket Cloud, while preserving username-based identification for non-UUID values (#87). - USERNAME column in `bkt repo default-reviewers list` Cloud output, making it easier to copy reviewer identifiers for use with `--reviewer`. ### Fixed - Tightened `looksLikeUUID` regex to match only canonical UUIDs (8-4-4-4-12 hex segments), preventing false positives on hex-only usernames like `cafe` or `dead`. - Bitbucket Cloud API conformance: reviewer auto-detection, merge 202 async polling with bounded retries, variable UUID normalization in URL paths, and pipeline pagelen raised to API maximum of 100 (#78). ### Changed - `--reviewer` flag help text now clarifies that both usernames and `{UUID}` values are accepted. - Moved `looksLikeUUID` helper alongside `normalizeUUID` in `client.go` for co-location. ## [0.12.0] - 2026-03-17 ### Added - `bkt pr comments ` command to list pull request comments with optional `--state` filtering (`resolved`, `unresolved`, `all`). Supports both Cloud and Data Center with paginated API calls. Cloud uses the `resolution` object for client-side state filtering (#75). - `bkt pr comment --parent ` flag for creating threaded replies under existing PR comments. Maps to the `parent.id` API field on both Cloud and Data Center (#76). - `bkt repo default-reviewers list` command to show effective default reviewers for a repository. Cloud displays reviewer display names and UUIDs; Data Center returns users from default reviewer conditions (#77). ### Changed - Bumped minimum Go version to 1.25 (required by `golang.org/x/term` v0.41.0). - CI and release workflows updated to use Go 1.25. ## [0.11.1] - 2026-03-11 ### Security - Rejected path traversal names in `bkt extension remove` and `bkt extension exec`. - Stopped passing sensitive `BKT_*` credentials into extension subprocess environments. - Hardened git command invocation by using `git clone --` where supported and rejecting option-like positional arguments where `--` is unavailable. - Capped `Retry-After` backoff handling in the retrying HTTP client to 60 seconds. - Added a warning when loading plaintext host tokens from `config.yml`. ### Changed - `bkt auth login` now requires `--allow-http` for `http://` hosts and warns when insecure HTTP is explicitly allowed. - `bkt auth login --token` now warns that command-line tokens may be visible to other local users. ### Fixed - Added regression coverage confirming Bitbucket Cloud `/user` requests preserve the versioned `/2.0` base path. ## [0.11.0] - 2026-03-11 ### Added - `bkt pr create --with-default-reviewers` flag that automatically fetches and merges repository default reviewers (Data Center only). Properly unmarshals `RestPullRequestCondition` responses, flattens nested reviewer groups, normalizes branch refs, and deduplicates across conditions and explicit `--reviewer` values. - Cloud `GetEffectiveDefaultReviewers` client (gated pending UUID-based reviewer identity migration). - Generic `mergeReviewers` helper with full deduplication including explicit reviewer duplicates. ## [0.10.0] - 2026-03-01 ### Added - `bkt commit diff ` command to stream unified diffs between two refs (commit SHAs, branches, or tags) for both Bitbucket Cloud and Data Center. ### Fixed - Added missing Cloud HTTP error test and unsupported host kind test for `commit diff` command. - Documented `..` edge case in Cloud spec parsing for branch names containing double-dot. ## [0.9.0] - 2026-02-24 ### Added - Bitbucket Cloud support for `pr checkout`, `pr diff`, `pr approve`, `pr merge`, and `pr comment` subcommands (#57). - `pr diff --stat` support for Cloud with per-file diff statistics. - Fork-aware `pr checkout` on Cloud with automatic protocol inference from existing remotes. ### Fixed - `pr checkout` now cleans up freshly added fork remotes when the subsequent fetch fails, preventing "remote already exists" errors on re-runs. ## [0.8.2] - 2026-02-24 ### Added - `BKT_TOKEN` environment variable for runtime token injection, bypassing the keyring entirely. Modeled after `GH_TOKEN` in the GitHub CLI. Enables headless/container usage without keyring dependencies (#59). - `auth status` now shows the token source (`BKT_TOKEN` or `keyring`) for each configured host. ### Fixed - `--allow-insecure-store` in headless/container environments no longer hangs on an interactive passphrase prompt. Returns an actionable error directing users to set `BKT_KEYRING_PASSPHRASE` or use `BKT_TOKEN` (#59). - `auth login` and `auth logout` now return a clear error when `BKT_TOKEN` is set, since the token is externally managed. ## [0.8.1] - 2026-02-16 ### Changed - Added Codecov integration for automated coverage tracking and badge in README. - Moved testing guidance from `docs/TESTING.md` into `CONTRIBUTING.md`. - Removed static `docs/TESTING.md` coverage audit in favor of dynamic Codecov reporting. ## [0.8.0] - 2026-02-16 ### Added - `bkt pr decline ` to decline (reject) a pull request, supporting both Data Center and Cloud (#51). - `bkt pr reopen ` to reopen a previously declined pull request (#51). - `--delete-source` flag on `bkt pr decline` to delete the source branch after declining (Data Center only). ### Fixed - `--delete-source` now correctly targets the source branch's own repository for forked pull requests, preventing accidental deletion in the wrong repo. ### Testing - Comprehensive test coverage improvements across 7 packages: config, httpx, bbcloud, bbdc, cmdutil, format, and TESTING.md. ## [0.7.2] - 2026-02-06 ### Fixed - Made keyring operations more reliable in interactive environments by using a longer default timeout, while keeping a short timeout for headless/SSH/CI to prevent hangs. Added `BKT_KEYRING_TIMEOUT` for configuration (#46). ## [0.7.1] - 2026-02-05 ### Fixed - Prevented auth login hangs in headless/SSH environments when keyring backends block on GUI prompts (#44). - Fixed skill publish version conflicts in CI. ## [0.7.0] - 2026-02-04 ### Added - Added issue attachment management commands (`bkt issue attachment ...`) (#41). ### Fixed - Improved attachment handling safety, tests, and documentation (#41). - Prevented a release race condition in CI with concurrency control. ## [0.6.0] - 2026-02-01 ### Added - `bkt pr list --mine` flag to list your PRs across all repositories in a workspace (Cloud) or project (Data Center) (#35). Thanks @steveardis! ## [0.5.5] - 2026-01-31 ### Added - Support build numbers as input for pipeline commands: `bkt pipeline view 10` (#38). - Bitbucket Pipelines CI configuration for dogfooding on Bitbucket Cloud mirror. - Documented `BKT_HTTP_DEBUG` environment variable for API troubleshooting. ### Fixed - Fixed 400 "unexpected.response.body" error on `bkt pipeline view` and `bkt pipeline logs` commands. Bitbucket Cloud requires UUID braces to be URL-encoded (#38). - Fixed 406 error on `bkt pipeline logs` by setting correct Accept header for octet-stream response. ## [0.5.4] - 2026-01-30 ### Added - `bkt pipeline list` now displays build number (`#N`) and timestamp for each pipeline run (#36). ### Changed - Pipeline list now sorts by newest first (`-created_on`) instead of oldest first. ## [0.5.3] - 2026-01-27 ### Added - New `bkt` skill for Claude Code and Codex CLI (#28). ### Fixed - Preserve base URL path when resolving request paths. - Update Bitbucket Cloud auth to use Atlassian API tokens. ## [0.5.2] - 2026-01-18 ### Changed - Clarified Bitbucket Cloud context creation in README, showing that `--host api.bitbucket.org` is required and adding a tip to use `bkt auth status` to discover the correct host value. ## [0.4.1] - 2026-01-17 ### Fixed - Improved error messages for CAPTCHA-locked accounts. When a Bitbucket account is locked due to failed authentication attempts, the CLI now displays the actual CAPTCHA message instead of a generic "XSRF check failed" error (#16). - Fixed SSH URL auto-detection for `ssh://host:port/PROJECT/repo.git` format. Previously, commands would default to a configured project instead of parsing the project from the git remote URL (#17). ### Changed - **Breaking**: Git remote now takes precedence over context config for project/repo detection. If you are in a git repository that matches your configured host, the CLI will use the project and repo from the git remote URL, overriding any values set in your context config. Use explicit `--project` and `--repo` flags to override this behavior. ## [0.4.0] - 2026-01-17 ### Added - New `bkt issue` command group for Bitbucket Cloud issue tracker (Cloud-only). - `bkt issue list`: List issues with filtering by state, kind, priority, assignee, milestone. - `bkt issue view`: Display issue details with optional comments. - `bkt issue create`: Create new issues with title, body, kind, priority, assignee, etc. - `bkt issue edit`: Update existing issue fields. - `bkt issue close`: Close an issue. - `bkt issue reopen`: Reopen a closed issue. - `bkt issue delete`: Delete an issue with confirmation prompt. - `bkt issue comment`: Add or list comments on an issue. - `bkt issue status`: Show issues assigned to or created by the current user. - All commands support `--json` and `--yaml` output formats. - New `bkt pr checks` command to display build/CI status for pull requests. - Supports both Bitbucket Data Center and Cloud APIs. - Color-coded output: green for success, red for failure, yellow for in-progress. - `--wait` flag polls until all builds complete (useful for CI automation). - `--timeout` flag sets maximum wait time (default: 30 minutes). - `--interval` flag configures initial polling frequency (default: 10 seconds). - `--max-interval` flag sets backoff cap (default: 2 minutes). - Exponential backoff (1.5x multiplier) to reduce API load during long builds. - Random jitter (±15%) prevents thundering herd when multiple clients poll. - Graceful handling of Ctrl-C interruption during polling. - Automatic retry with backoff on transient errors (up to 3 attempts). - Returns non-zero exit code when builds fail (for scripting). - Shared `CommitStatus` type in `pkg/types` for consistency between API clients. ## [0.2.1] - 2025-11-09 ### Security - Tokens are now persisted in the host OS keychain (Keychain/WinCred/Secret Service) instead of `config.yml`, with an opt-in encrypted file fallback gated behind `--allow-insecure-store` for legacy hosts. ### Fixed - Removed plaintext credential writes and aligned CLI output with lint expectations (errcheck), keeping tests and release automation green. ## [0.2.0] - 2025-10-28 ### Added - Comprehensive Data Center coverage: reviewer groups, auto-merge management, diff statistics, PR tasks and suggestions, comment reactions, branch permissions, secrets rotation, logging controls. - Bitbucket Cloud support: authentication, repository/branch/pull-request flows, Pipelines run/list/view/log, webhook management, `status pipeline`, shared rate-limit telemetry. - Raw `bkt api` escape hatch with method/field/header/param support for experimentation and automation. - Extension lifecycle commands (`bkt extension install|list|remove|exec`) with automatic cloning into the CLI config directory. - Shared infrastructure upgrades: retrying HTTP client with caching, jq and Go-template output, pager integration, interactive prompts, browser helpers. - Observability: `bkt status rate-limit`, adaptive throttling, HTTP trace mode. - OSS readiness: Code of Conduct, contributing guide, governance, security policy, issue/PR templates, CI workflows, SBOM build, GoReleaser config. - Project list command for pre-context discovery. - Git remote inference for repository defaults. - Enhanced pagination and retry logic for Cloud API. ### Changed - `bkt pr diff` now supports `--stat` and streams via the pager when available. - `bkt webhook` commands support both Data Center and Cloud instances. - Simplified installation instructions to focus on Go install. ### Fixed - Added timeout protection for git command execution to prevent hanging. - Fixed CI workflow to use correct branch name (master). - Corrected Go version references in CI and release workflows. - Updated GoReleaser configuration to use modern syntax. - Added clarifying comments for intentionally ignored errors. - Improved error handling for context resolution and merge workflows. ## [0.1.0] - 2025-10-26 - Initial public release of `bkt`. [Unreleased]: https://github.com/avivsinai/bitbucket-cli/compare/v0.38.1...HEAD [0.38.1]: https://github.com/avivsinai/bitbucket-cli/compare/v0.38.0...v0.38.1 [0.38.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.37.0...v0.38.0 [0.37.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.36.0...v0.37.0 [0.36.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.35.2...v0.36.0 [0.35.2]: https://github.com/avivsinai/bitbucket-cli/compare/v0.35.1...v0.35.2 [0.35.1]: https://github.com/avivsinai/bitbucket-cli/compare/v0.35.0...v0.35.1 [0.35.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.34.0...v0.35.0 [0.34.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.33.1...v0.34.0 [0.33.1]: https://github.com/avivsinai/bitbucket-cli/compare/v0.33.0...v0.33.1 [0.33.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.32.1...v0.33.0 [0.32.1]: https://github.com/avivsinai/bitbucket-cli/compare/v0.32.0...v0.32.1 [0.32.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.31.1...v0.32.0 [0.31.1]: https://github.com/avivsinai/bitbucket-cli/compare/v0.31.0...v0.31.1 [0.31.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.30.1...v0.31.0 [0.30.1]: https://github.com/avivsinai/bitbucket-cli/compare/v0.30.0...v0.30.1 [0.30.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.29.0...v0.30.0 [0.29.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.28.2...v0.29.0 [0.28.2]: https://github.com/avivsinai/bitbucket-cli/compare/v0.28.1...v0.28.2 [0.28.1]: https://github.com/avivsinai/bitbucket-cli/compare/v0.28.0...v0.28.1 [0.28.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.27.1...v0.28.0 [0.27.1]: https://github.com/avivsinai/bitbucket-cli/compare/v0.27.0...v0.27.1 [0.27.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.26.7...v0.27.0 [0.26.7]: https://github.com/avivsinai/bitbucket-cli/compare/v0.26.6...v0.26.7 [0.26.6]: https://github.com/avivsinai/bitbucket-cli/compare/v0.26.5...v0.26.6 [0.26.5]: https://github.com/avivsinai/bitbucket-cli/compare/v0.26.4...v0.26.5 [0.26.4]: https://github.com/avivsinai/bitbucket-cli/compare/v0.26.3...v0.26.4 [0.26.3]: https://github.com/avivsinai/bitbucket-cli/compare/v0.26.2...v0.26.3 [0.26.2]: https://github.com/avivsinai/bitbucket-cli/compare/v0.26.1...v0.26.2 [0.26.1]: https://github.com/avivsinai/bitbucket-cli/compare/v0.26.0...v0.26.1 [0.26.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.25.0...v0.26.0 [0.25.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.24.1...v0.25.0 [0.24.1]: https://github.com/avivsinai/bitbucket-cli/compare/v0.24.0...v0.24.1 [0.24.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.23.0...v0.24.0 [0.23.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.22.0...v0.23.0 [0.22.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.21.0...v0.22.0 [0.21.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.20.0...v0.21.0 [0.20.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.19.0...v0.20.0 [0.19.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.18.0...v0.19.0 [0.18.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.17.0...v0.18.0 [0.17.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.16.4...v0.17.0 [0.16.4]: https://github.com/avivsinai/bitbucket-cli/compare/v0.16.3...v0.16.4 [0.16.3]: https://github.com/avivsinai/bitbucket-cli/compare/v0.16.2...v0.16.3 [0.16.2]: https://github.com/avivsinai/bitbucket-cli/compare/v0.16.1...v0.16.2 [0.16.1]: https://github.com/avivsinai/bitbucket-cli/compare/v0.15.0...v0.16.1 [0.15.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.14.7...v0.15.0 [0.14.7]: https://github.com/avivsinai/bitbucket-cli/compare/v0.14.6...v0.14.7 [0.14.6]: https://github.com/avivsinai/bitbucket-cli/compare/v0.14.5...v0.14.6 [0.14.5]: https://github.com/avivsinai/bitbucket-cli/compare/v0.14.4...v0.14.5 [0.14.4]: https://github.com/avivsinai/bitbucket-cli/compare/v0.14.3...v0.14.4 [0.14.3]: https://github.com/avivsinai/bitbucket-cli/compare/v0.14.2...v0.14.3 [0.14.2]: https://github.com/avivsinai/bitbucket-cli/compare/v0.14.1...v0.14.2 [0.14.1]: https://github.com/avivsinai/bitbucket-cli/compare/v0.14.0...v0.14.1 [0.14.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.13.1...v0.14.0 [0.13.1]: https://github.com/avivsinai/bitbucket-cli/compare/v0.13.0...v0.13.1 [0.13.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.12.0...v0.13.0 [0.12.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.11.1...v0.12.0 [0.11.1]: https://github.com/avivsinai/bitbucket-cli/compare/v0.11.0...v0.11.1 [0.11.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.10.0...v0.11.0 [0.10.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.9.0...v0.10.0 [0.9.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.8.2...v0.9.0 [0.8.2]: https://github.com/avivsinai/bitbucket-cli/compare/v0.8.1...v0.8.2 [0.8.1]: https://github.com/avivsinai/bitbucket-cli/compare/v0.8.0...v0.8.1 [0.8.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.7.2...v0.8.0 [0.7.2]: https://github.com/avivsinai/bitbucket-cli/compare/v0.7.1...v0.7.2 [0.7.1]: https://github.com/avivsinai/bitbucket-cli/compare/v0.7.0...v0.7.1 [0.7.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.6.0...v0.7.0 [0.6.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.5.5...v0.6.0 [0.5.5]: https://github.com/avivsinai/bitbucket-cli/compare/v0.5.4...v0.5.5 [0.5.4]: https://github.com/avivsinai/bitbucket-cli/compare/v0.5.3...v0.5.4 [0.5.3]: https://github.com/avivsinai/bitbucket-cli/compare/v0.5.2...v0.5.3 [0.5.2]: https://github.com/avivsinai/bitbucket-cli/compare/v0.4.1...v0.5.2 [0.4.1]: https://github.com/avivsinai/bitbucket-cli/compare/v0.4.0...v0.4.1 [0.4.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.2.1...v0.4.0 [0.2.1]: https://github.com/avivsinai/bitbucket-cli/compare/v0.2.0...v0.2.1 [0.2.0]: https://github.com/avivsinai/bitbucket-cli/compare/v0.1.0...v0.2.0 [0.1.0]: https://github.com/avivsinai/bitbucket-cli/releases/tag/v0.1.0