Skip to content

v0.16.6

Choose a tag to compare

@github-actions github-actions released this 19 Sep 16:56
· 489 commits to main since this release

Full release notes: https://danbyte.net/news/v0-16-0

New in 0.16.6

Security

  • Export templates render only what the caller may view, and never a credential. The render path scoped rows by tenant alone, so a site-scoped user got the whole tenant, and a template could name a webhook or automation target as its subject and print its decrypted secret and Authorization header. Rows now pass the same row/site restriction as the lists, types that carry credentials cannot be a template's subject, and a secret field or PSK accessor is unreadable from any row a template reaches. (#193)
  • Rendered output is always an inert download. A template declaring text/html was served inline on the app's origin, which let a template author run script for whoever opened it. Renders now download as plain text unless the declared type is CSV, JSON, XML, YAML or plain text, with nosniff set. (#195)
  • Webhook header names no longer echo a folded value. A header line without a colon was returned whole as a "name". Only well-formed Name: value lines contribute a name. (#194)
  • A bulk-rename pattern cannot hold a worker. A user regex runs under a match deadline and a length cap, and a compliance rule's pattern the same. A pattern that takes too long is refused with a field error. (#202)

Fixed

  • Change log labels survive a malformed stored id. One bad primary key in a page's diffs blanked every label of that model on the page; it now costs only its own label. (#199)
  • VRF list costs the same at any size. Prefix, VLAN and address counts per VRF come with the page instead of three queries per row. (#196)
  • Check materialisation no longer loads every prefix per address. A pass builds one prefix index per tenant and resolves each address against it, and the candidate scan reads the tenant's addresses once instead of once per prefix assignment. (#198)
  • Compliance evaluates each object type in one scan whatever the number of rules on it. (#200)
  • The dashboard's scope and family distributions are grouped counts in the database, not every address parsed in Python. (#201)
  • A save indexes its tags once, and an import indexes each row once at the end rather than inline per save; a dry run indexes nothing. (#197)

Upgrading

  • New Python dependency regex. A git install picks it up with the upgrade's dependency step; the bundle ships the wheel.

Added

  • The id on a label finds its object. Typing the number a flag shows (206) or the first characters of the object's UUID (d4d9c41c) into any list's search box matches it; a number matches numid exactly, six or more hex characters match the start of the UUID. Every list endpoint of a numbered type takes ?numid=<n> instead of ignoring it. Labels gain {{ short_hex }}, the first eight characters of the UUID, and {{ short_id }} falls back to it on an object with no number yet.