What’s New
Release notes for ajat, newest first.
Latest
Reports
report workflowrenders 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.
- Rules, people and projects deep-link into Jira, so a finding in a report is one click from the thing it describes.
- 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 now appears on every report rather than only some.
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_tokenHints 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
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.
--debugproduced 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-filesays otherwise, and stands the progress bar down so the two do not overwrite each other.- A broken
log.level,log.formator unwritablelog.fileblocked every command — including theconfigcommands that repair it, soajat config set log.level infocould not fix a badlog.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 whereinspected--config-fileinstead ofconfigand refused to run, while the same command with the flag moved worked — which made theconfigcommands 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
- Generate HTML Reports — the five report types
- Export the Estate — backup and incremental export
- Configuration — credentials, hosts and logging
Last updated on