# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/).
## [Unreleased]
## [0.4.12](https://github.com/rvben/jira-cli/compare/v0.4.11...v0.4.12) - 2026-09-16
### Added
- **cli**: improve discovery, write previews, and bulk outcomes ([cc8cfcf](https://github.com/rvben/jira-cli/commit/cc8cfcf1f298a7657fb53463547a837389aa289d))
## [0.4.11](https://github.com/rvben/jira-cli/compare/v0.4.10...v0.4.11) - 2026-09-16
### Added
- `issues create` and `issues move` scope sprint names and `active` to project Scrum boards, with `--board ID` to choose a board. Ambiguous matches list candidate sprint and board IDs.
- Component and fix version names, IDs, and unique prefixes resolve against create/edit metadata. Required fields and parent/type compatibility are checked before writing.
- `issues update --clear-epic` removes epic membership using the instance's native or custom field.
### Fixed
- Sprint lookup and state validation happen before issue creation. If the later sprint move fails, exit code `8` (`partial_success`) reports the created issue key, URL, and recovery command so callers can finish without creating a duplicate.
- `--assignee none` and `--assignee unassign` consistently clear assignees on create, update, and assign. Omitting the flag preserves defaults or existing values.
## [0.4.10](https://github.com/rvben/jira-cli/compare/v0.4.9...v0.4.10) - 2026-09-16
### Added
- `issues create` and `issues update` accept `--epic KEY`, discovering the instance's Epic Link field or native parent. Creating with `--parent` pointing to an Epic also uses epic linkage.
- Priority names, IDs, numeric-ranked labels, and unique prefixes are resolved against create/edit metadata. Invalid or ambiguous input lists valid options before writing; create also validates issue type names and IDs.
### Fixed
- Issue creation and updates provide actionable priority and epic-link guidance for Jira field validation errors.
## [0.4.9](https://github.com/rvben/jira-cli/compare/v0.4.8...v0.4.9) - 2026-09-03
### Added
- **auth**: standardize authentication workflow ([ec87400](https://github.com/rvben/jira-cli/commit/ec874008243f996ed83d44dd0ae23825d8064b5b))
## [0.4.8](https://github.com/rvben/jira-cli/compare/v0.4.7...v0.4.8) - 2026-08-26
### Added
- **auth**: unify secure onboarding ([c12748e](https://github.com/rvben/jira-cli/commit/c12748ef9976d57caa84aa60a57e1844d39e5d8f))
- **onboarding**: harden guided setup ([120ab9f](https://github.com/rvben/jira-cli/commit/120ab9f66f8f50a51e09cdcf39c116c352a8dd31))
- **cli**: standardize color controls ([885c99d](https://github.com/rvben/jira-cli/commit/885c99de88185b7022b6f887e6b11094fad85bc4))
### Fixed
- **auth**: use stable Data Center token page ([6a4a53d](https://github.com/rvben/jira-cli/commit/6a4a53d97c1d50cd3a0e3e5866dd3cb308707695))
- **package**: complete distribution metadata ([2598ee0](https://github.com/rvben/jira-cli/commit/2598ee05cb1bb25545d08ca77784a5f39cc522a0))
- **release**: allow cold ARM builds to finish ([cdd4085](https://github.com/rvben/jira-cli/commit/cdd40857edbd10ec9479e78e10f90d6d182bd210))
- **release**: provision ARM build tools ([1fb6863](https://github.com/rvben/jira-cli/commit/1fb686391bfbe54a18f141e0955839af17dc70cb))
- **release**: avoid privileged ARM tool install ([0de71d1](https://github.com/rvben/jira-cli/commit/0de71d1746ac7c27f13a7012afc11f51e1e2b16f))
- **ci**: install pinned Rust components ([e1a3cc3](https://github.com/rvben/jira-cli/commit/e1a3cc38ba8dd5e230a999875274c6e4bf9cbf4a))
## [0.4.7](https://github.com/rvben/jira-cli/compare/v0.4.6...v0.4.7) - 2026-08-22
### Added
- **cli**: add doctor and command-scoped schema ([072256b](https://github.com/rvben/jira-cli/commit/072256b0932799b895842b5a840c46289528c24f))
## [0.4.2](https://github.com/rvben/jira-cli/compare/v0.4.1...v0.4.2) - 2026-08-10
**Piping into a command that stops reading no longer panics.** `jira issues list
counter that defaulted to zero when the server omitted it: on Data Center a
missing `total` made the first page look like the last, and on Cloud a search
page missing its `issues` array was read as a page of zero, which the cursor
walk treats as the end of the results. Either way `--all` returned what it had
and exited 0. Absent counters are now reported as unknown or rejected, never as
zero.
A config file defining `profiles` as something other than a table made `config
setup` panic after the credentials had already been entered; it now says which
file and key to fix.
### Fixed
- **search**: stop reading a malformed skip page as the end of the results ([bb0d377](https://github.com/rvben/jira-cli/commit/bb0d3770efc2a425e6443fcb376569bfd412a3e7))
- **config**: report a non-table `profiles` key instead of panicking ([12f5111](https://github.com/rvben/jira-cli/commit/12f5111bc2c17941dfb5b868cc0d9f73258238f3))
- exit quietly when a downstream stops reading ([1c6e055](https://github.com/rvben/jira-cli/commit/1c6e0554b95236b9857369f6f84a77d3d10fbfcf))
- **search**: report an absent v2 total as unknown, not as zero ([b80f29e](https://github.com/rvben/jira-cli/commit/b80f29ea5528ea78f9ac72a2b54cad1108b83e8b))
## [0.4.1](https://github.com/rvben/jira-cli/compare/v0.4.0...v0.4.1) - 2026-08-10
**`JIRA_READ_ONLY` could silently fail open.** It matched `1`, `true`, `yes` and
`on` exactly, so `JIRA_READ_ONLY=True` resolved to "off" and every write went
through while the guard looked enabled. Values are now matched
case-insensitively, and anything that is neither an on nor an off value is
rejected as a config error instead of read as "off".
`JIRA_AUTH_TYPE` and `JIRA_API_VERSION` had the same shape of bug: a typo fell
back to basic auth (surfacing as an opaque 401 from Jira), and an unsupported
version built requests against `/rest/api/<n>/` and reported Jira's 404 as the
problem. Both now reject an unrecognised value and name what they accept.
If you rely on one of those values being accepted loosely, the command now
exits 2 rather than continuing with a default. `JIRA_DEBUG_HTTP` is unchanged in
this respect: a typo there is still read as off, because failing a command over
a debug switch costs more than the missed logging.
### Added
- **schema**: declare read-only mode and diagnostics in the schema ([8b37ab3](https://github.com/rvben/jira-cli/commit/8b37ab39a8d51181e8d0ca3db5bb379c94debddf))
### Fixed
- **config**: reject unrecognised environment values instead of defaulting ([af952bb](https://github.com/rvben/jira-cli/commit/af952bb35205363712d2136f44df6df89bfebef0))
- **schema**: show auth_type and api_version in the example config ([8e781f2](https://github.com/rvben/jira-cli/commit/8e781f27125f2a7848914509e6da44c0cdd6519f))
## [0.4.0](https://github.com/rvben/jira-cli/compare/v0.3.16...v0.4.0) - 2026-08-10
Attachment operations were contributed by [@phlppbmm](https://github.com/phlppbmm)
in [#6](https://github.com/rvben/jira-cli/pull/6). Thank you.
**Breaking, JSON output only.** `assignee`, `priority`, `reporter` and
`description` now report `null` when the field is absent. They previously
reported `"-"`, the placeholder meant for table output, which made an unassigned
issue indistinguishable from one assigned to a user whose display name is `-`
(an empty description was `""`). `issues assign` now emits `accountId: null` when
it unassigns, instead of an undeclared `assignee` key, so both paths return the
same keys. Table output is unchanged.
### Added
- **issues**: add attachment operations ([65d1a29](https://github.com/rvben/jira-cli/commit/65d1a290b08422fa0c2d44dbfe7d72a6522234c4))
### Fixed
- **schema**: declare the fields each command actually emits ([cdb43aa](https://github.com/rvben/jira-cli/commit/cdb43aac4dee30a5258e122f650af86d433861f4))
- **issues**: report an absent field as null in JSON, not "-" ([8006386](https://github.com/rvben/jira-cli/commit/80063864c23bdb555d44334f1d608cff7ce7ab40))
- **issues**: report an absent attachment author as null, not "-" ([6bf201d](https://github.com/rvben/jira-cli/commit/6bf201da88de994625dd063c674d98806344862e))
- **issues**: add --force flag and pre-flight checks to download-attachment ([8398fd1](https://github.com/rvben/jira-cli/commit/8398fd19933587eb9e963fc335612913e56fd4db))
## [0.3.16](https://github.com/rvben/jira-cli/compare/v0.3.15...v0.3.16) - 2026-08-09
### Fixed
- **errors**: make declared error kinds reachable and stderr single-format ([400250b](https://github.com/rvben/jira-cli/commit/400250bb725ada3338da3d0905549c764f5ccfed))
- emit the JSON output and error kinds that schema declares ([5435ed1](https://github.com/rvben/jira-cli/commit/5435ed1d56700fc57a94116c28437dc6eeacd3e7))
## [0.3.15](https://github.com/rvben/jira-cli/compare/v0.3.14...v0.3.15) - 2026-06-20
### Fixed
- **schema**: correct exit-code declarations ([55711d9](https://github.com/rvben/jira-cli/commit/55711d985ace403b47785b522022c5f6f529cb51))
## [0.3.14](https://github.com/rvben/jira-cli/compare/v0.3.13...v0.3.14) - 2026-06-11
### Added
- comply with CLI Spec v0.2 (schema, output, error envelope) ([ba3dad3](https://github.com/rvben/jira-cli/commit/ba3dad3bb65c914f2a852848022c2fa877443576))
## [0.3.13](https://github.com/rvben/jira-cli/compare/v0.3.12...v0.3.13) - 2026-05-02
### Added
- **projects**: add versions subcommand for version discovery ([7d46727](https://github.com/rvben/jira-cli/commit/7d46727a299bad1c4f8f38b97792bfb0a986b336))
- **issues**: add --fix-versions filter to issues list ([ada429b](https://github.com/rvben/jira-cli/commit/ada429b502a8003e961c98ed90fc39171319b763))
- **issues**: add --fix-versions, --labels, --assignee flags to issues update ([06d61d3](https://github.com/rvben/jira-cli/commit/06d61d3f5abc0f5f21037fed3188aca8884e2bfb))
- **issues**: add --fix-version flag to issues create ([4ddd0f6](https://github.com/rvben/jira-cli/commit/4ddd0f61fd11cc83f035aee9332a5eda67384d13))
- **issues**: render fix versions and affected versions in issue detail view ([3f00bf2](https://github.com/rvben/jira-cli/commit/3f00bf203b27b313d7221c6393c1226a846e3b45))
- **issues**: deserialize fixVersions and affectedVersions from Jira API ([8f285b5](https://github.com/rvben/jira-cli/commit/8f285b56bd947164e5af12cf29f1e46947b5ce4f))
## [0.3.12](https://github.com/rvben/jira-cli/compare/v0.3.11...v0.3.12) - 2026-04-28
### Added
- **issues**: add --labels filter to issues list ([3956f89](https://github.com/rvben/jira-cli/commit/3956f89e6706f21f86d5068bd0983807d53ed0ad))
- **issues**: include components in issues show --json output ([eed7328](https://github.com/rvben/jira-cli/commit/eed73281bf1f47de51d807bb404c9ce0bc7a7daa))
- **projects**: add components subcommand for component discovery ([f97c012](https://github.com/rvben/jira-cli/commit/f97c0120b2f41dc650ac2dd4f9b4aaf745822df6))
- **issues**: add --components filter to issues list ([8c6c4a7](https://github.com/rvben/jira-cli/commit/8c6c4a75d4f1b57fc6a420600d79b3a7ed74497b))
- **issues**: add --components flag to issues update ([4c856cb](https://github.com/rvben/jira-cli/commit/4c856cb5acc5ccfbd7ac513b4f171a4d37c73873))
- **issues**: add --component flag to issues create ([4daa8e5](https://github.com/rvben/jira-cli/commit/4daa8e518508fab59c18782b14ebc221aa358ab4))
- **issues**: render components in issue detail view ([d3d40c5](https://github.com/rvben/jira-cli/commit/d3d40c53180646185eea9e50a07301c6535116d2))
- **issues**: deserialize component field from Jira API ([232bc93](https://github.com/rvben/jira-cli/commit/232bc93de5d21d584f22762011dd92feea04d560))
## [0.3.11](https://github.com/rvben/jira-cli/compare/v0.3.10...v0.3.11) - 2026-04-23
### Added
- **issues**: detect real terminal width for the issues table ([7e44c00](https://github.com/rvben/jira-cli/commit/7e44c00359749e51743c28db37c97203cb5afd07))
### Fixed
- **errors**: surface Jira errorMessages in default error summary ([e7645a1](https://github.com/rvben/jira-cli/commit/e7645a1f61f94fb32297a0c7121dde0981a4addc))
## [0.3.10](https://github.com/rvben/jira-cli/compare/v0.3.9...v0.3.10) - 2026-04-23
### Fixed
- **search**: harden v3 cursor walk and clean up search path ([3643291](https://github.com/rvben/jira-cli/commit/36432911a899cc9fe86efdd75e98a180a3d402cb))
- migrate Jira Cloud search to /rest/api/3/search/jql ([c858fa2](https://github.com/rvben/jira-cli/commit/c858fa251b437e274568680047adb584a8eacf34))
## [0.3.9](https://github.com/rvben/jira-cli/compare/v0.3.8...v0.3.9) - 2026-04-08
### Added
- publish to PyPI as jira-cli-rs ([8f5370a](https://github.com/rvben/jira-cli/commit/8f5370a26bd9b162be95c7f5e78a47a6771fd9a8))
## [0.3.8](https://github.com/rvben/jira-cli/compare/v0.3.7...v0.3.8) - 2026-04-07
### Added
- `jira issue PROJ-123` falls through to `issues show` ([3764b1f](https://github.com/rvben/jira-cli/commit/3764b1f746a60bd853677b7d38a32d014002c5fe))
- add singular aliases for all subcommand groups ([2d05eea](https://github.com/rvben/jira-cli/commit/2d05eea6fa74ae5ee1ddadf169a54afa43d1490d))
### Fixed
- schema tests acquire env lock to prevent XDG_CONFIG_HOME leakage ([204b794](https://github.com/rvben/jira-cli/commit/204b79422741328a81be0b70744a8a9078e8eb4b))
## [0.3.7](https://github.com/rvben/jira-cli/compare/v0.3.6...v0.3.7) - 2026-04-03
### Added
- add top-level `issue` command as shortcut for `issues show` ([788bcc4](https://github.com/rvben/jira-cli/commit/788bcc4722b5a23d1fb11d08fdfabf814e2c53f5))
## [0.3.6](https://github.com/rvben/jira-cli/compare/v0.3.5...v0.3.6) - 2026-04-03
## [0.3.5](https://github.com/rvben/jira-cli/compare/v0.3.4...v0.3.5) - 2026-04-03
## [0.3.4](https://github.com/rvben/jira-cli/compare/v0.3.3...v0.3.4) - 2026-04-01
### Added
- add read-only mode via JIRA_READ_ONLY env var and config field ([68e15a3](https://github.com/rvben/jira-cli/commit/68e15a353c5000488516ccc929597c6da5df7929))
## [0.3.3](https://github.com/rvben/jira-cli/compare/v0.3.2...v0.3.3) - 2026-03-31
### Fixed
- **config**: show token in plain text during init ([fd62572](https://github.com/rvben/jira-cli/commit/fd6257201119664fa280e0d3b8d30983450cac23))
## [0.3.2](https://github.com/rvben/jira-cli/compare/v0.3.1...v0.3.2) - 2026-03-31
### Added
- **config**: interactive init wizard and profile removal ([1db53db](https://github.com/rvben/jira-cli/commit/1db53dbaf75c65d0d0ae3fcde9de6e3b878ed8a8))
## [0.3.1](https://github.com/rvben/jira-cli/compare/v0.3.0...v0.3.1) - 2026-03-30
### Fixed
- simplify mount_board_and_sprints to async fn per clippy lint ([37e094b](https://github.com/rvben/jira-cli/commit/37e094b6fe2c1c6f8602c3faccaea1d8adcfbb73))
## [0.3.0](https://github.com/rvben/jira-cli/compare/v0.2.0...v0.3.0) - 2026-03-30
### Added
- **issues**: add worklog, bulk ops, and subtask support ([5383672](https://github.com/rvben/jira-cli/commit/53836728887f079934ed793a7be96665e9b152be))
## [0.2.0](https://github.com/rvben/jira-cli/compare/v0.1.0...v0.2.0) - 2026-03-30
### Added
- **issues**: add --all pagination, issues mine, and issues comments ([725def7](https://github.com/rvben/jira-cli/commit/725def78a7580e43a27473951ece76024050b82a))
- add users, boards, sprints, fields, issue links, and sprint assignment ([639fb26](https://github.com/rvben/jira-cli/commit/639fb2641a6ab744c66204f1b305c6e7b402b65d))
- improve config init output with DC/Server PAT instructions ([0193584](https://github.com/rvben/jira-cli/commit/01935847c8e02c50fba48864af9cc6edb554b2ce))
- add Jira Data Center / Server support ([f654ef3](https://github.com/rvben/jira-cli/commit/f654ef3c399f54b326ee0cdafe085caafd4b8327))
## [0.1.0](https://github.com/rvben/jira-cli/compare/v0.0.2...v0.1.0) - 2026-03-30
## [0.0.2] - 2026-03-30
### Added
- initial release of jira CLI ([e5f730b](https://github.com/rvben/jira-cli/commit/e5f730ba424a2b753d333fa389f0c3491d6f6402))
### Fixed
- align config bootstrap and schema contract ([a316125](https://github.com/rvben/jira-cli/commit/a316125cb243e209ecacf59af96980fbb4eace21))
- harden jira api behavior and pagination ([64956bf](https://github.com/rvben/jira-cli/commit/64956bfe702f094002d65cf476ddc01175283245))