Skip to Content
Atlassian Jiraajatv1.0.xWhat's New

What’s New

Release notes for ajat, newest first.


Latest

Knowing when there is something to install

ajat doctor reports the newest release available to you, alongside the command that installs it; the check never fails the diagnosis and says “could not check” when offline. After an ordinary command, ajat also asks the update service at most once a day, waits at most two seconds, and prints a single line to stderr when a newer release exists. The notice stays out of your way: never in CI, never under sudo, never when stderr is not a terminal, and never after a command that needs no license. Turn it off with ajat config set update.notice false.

ajat update also keeps working when the store’s daily download limit is reached — each file may be downloaded ten times a day, and beyond that ajat fetches the same release from Climakers’ own storage.

Activation is steadier on Linux

License files are encrypted against a machine identifier, and on Linux that identifier now survives kernel and microcode updates and VM resizes. Licenses activated before this release keep working: a subscription license moves to the new identifier the first time it is opened, and a signed offline license keeps the identifier it was issued for. Nothing needs re-activating, and macOS is unaffected.

Updates from inside the tool

ajat update installs the newest release your license includes: it downloads it from Climakers, verifies its SHA-256 checksum and replaces the running binary. On macOS it installs the signed, notarized package and runs as sudo ajat update; on Linux it replaces the binary in place and never uses sudo. --check reports without changing anything. Signed offline (local) licenses update too, and after a subscription ends, releases published before the end date stay installable. Available from v1.0.4. See Updating ajat.

Reports

  • report workflow renders every rule as a per-rule flow-diagram runbook — the shape of the automation estate as something a person can read and hand to an auditor. See Generate HTML Reports.
  • Per-rule SVG flow diagrams in the inventory, shown by default when a rule is expanded.
  • Behavioural-duplicate detection in the collision report. Two rules that are written differently but do the same thing are now surfaced, not just literal name or trigger overlaps.
  • The risk report explains its own scoring, and links each category-list rule through to the Jira automation it came from.
  • People and projects deep-link into Jira, so a finding in a report is one click from the account or project it describes. Rules link to the automation rule list for the site: Jira’s API does not expose the identifier a per-rule link would need.
  • Identity chips with avatars and status in member lists, and notification targets — emails and channels — surfaced directly in the report.
  • The Analytics panel explains itself, and appears on the inventory, collision, consistency and risk reports. The workflow report is a per-rule runbook and deliberately carries no estate-level charts.

API failures tell you what to do about them

A rejected token used to surface as a bare HTTP status. Errors from the Jira and licensing APIs now carry a hint:

Error: resolve cloud id: GET https://acme.atlassian.net/rest/api/3/myself returned 401: {"message":"Unauthorized"} Hint: Authentication failed — verify your jira.username and jira.api_token

Hints cover authentication (401), permissions (403), a wrong domain or resource (404), rate limiting (429) and Jira outages (5xx). An exhausted rate limit suggests lowering --workers rather than simply retrying, and a non-Cloud site is named explicitly.

Fixes

  • license activate --license-key <file> says which flag takes a file. Passing a license file to --license-key answered “invalid license key format: expected UUID v4”; it now explains that a license file is activated with --license-file, and prints the exact command.
  • ajat update sees a new release right away. Just after a release, update could report the previous version for several minutes because the update service answered from a cached copy. Installing, and update --check --force, now ask the service directly.

jira.automation_base_url was silently ignored by every command except doctor. If you run against a private automation host, doctor reported a healthy setup while export, import, invoke, search and every rule subcommand kept talking to api.atlassian.com. The Jira client is now built in one place, so every command reads the same configuration.

  • --debug produced no output at all. It set the log level but left the destination at its default, which discards everything. It now logs to stderr unless --log-file says otherwise, and stands the progress bar down so the two do not overwrite each other.
  • A broken log.level, log.format or unwritable log.file blocked every command — including the config commands that repair it, so ajat config set log.level info could not fix a bad log.level. Those commands now fall back to working settings for the run and name the key to change.
  • A global flag placed before an exempt command made it validate the configuration. ajat --config-file broken.yaml config where inspected --config-file instead of config and refused to run, while the same command with the flag moved worked — which made the config commands unusable for inspecting exactly the broken configuration you were trying to look at.
  • The progress bar could leave a goroutine rendering after it stopped, so the next command’s progress bar corrupted the previous one’s state. Stopping now waits for the renderer to return, which also removes a fixed 50 ms cost from every command that shows progress.

See also

Last updated on