Skip to content

v0.41.2

Choose a tag to compare

@github-actions github-actions released this 03 Oct 04:24
· 32 commits to main since this release
cf4d903

On the first quiet day of the soak, report --json said the comparison could not be made, because "no significant changes" was filed under the kind that means exactly that. This release makes an empty answer look empty: a comparison that found nothing returns [], no list anywhere comes back as null, and the two answers that used Go's field names as JSON keys use snake_case like every other. All of it changes what a caller receives, which is why it ships before 1.0 rather than after: 1.0 freezes these shapes, and they would have been frozen saying the wrong thing. A test now fails on a capitalised key, and another on a list that would reach a caller as null, so neither can come back.

⚠️ Behavior changes

  • A report with nothing to say now has an empty notable_changes (#308). It used to carry one skipped line, which by its own definition meant the comparison could not be made: "No significant changes since last report" was filed under the kind for "could not compare". The terminal still prints that sentence; --json and the MCP tool now return []. Found on the 0.40.0 soak, whose first quiet day said skipped. A first run and an unreadable previous snapshot still carry their skipped line, because for them the comparison really was not made
  • needs_attention and suggested_actions are [] when there is nothing in them, not null (#308), and so is notable_changes. null says the field is missing; [] says there is nothing in it. A caller that checked == null for "nothing to do" now has to check for an empty list
  • install_list, GET /api/install and a watch incident's flapping use snake_case keys (#309). They were the only answers with capitalised keys: Name, DefaultPort and the rest for an app, IsFlapping, Count and the rest for flapping, because neither struct had JSON tags. install_list also no longer carries each app's whole compose template. A caller reading the old keys breaks; it breaks now because 1.0 freezes key names, and these would otherwise have been frozen as Go's. Incidents already on disk with the old flapping keys are still read
  • No list in any answer is null (#310). alerts_history on a machine with no history answered null over MCP while --json printed [] for the same thing, and a list nested in an answer — system.disks when no disk could be read — could be null wherever nothing had been appended to it. MCP, the HTTP routes and --json now pass every answer through one function that writes an empty list or map where null would have been, at any depth. A field with omitempty and a nil pointer still mean "absent" and are left alone

🐛 Fixes

  • the dashboard's report card showed a bare skipped chip on a quiet day (#308). It now says No significant changes since last report. when the list is empty