Repository navigation
v0.16.6
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/htmlwas 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, withnosniffset. (#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: valuelines 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 matchesnumidexactly, 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.