1.6.1¶
Released: 2026-06-03
Highlights¶
- Landing pages can now be filtered by tag (and any array-backed column) — for
example, items by
tagIds— which was previously silently ignored. - Pagination totals on grouped landing pages (e.g. items) are now correct.
Added¶
- Array / aggregate column filtering on
findLandingPages/findLandingPageKpis. Membership filters (IN/EQ/NOT_IN/NE) on array columns such astagIds(UUIDs) andtags(names) translate to a PostgreSQL array-overlap (&&) condition, applied inHAVINGfor aggregate columns. See Landing-Page Array/Tag Filters.
Changed¶
- The internal
build_filter_conditionnow returns aBuiltConditioncarrying a WHERE/HAVING target;apply_filtersbuckets conditions per clause. No GraphQL schema change.
Fixed¶
findLandingPages(sourceType: ITEMS)filters ontagId/tagIdswere silently dropped (singular field didn't exist; plural blew up parsinglist[uuid.UUID]).totalon grouped landing statements counted rows within the first group instead of the number of groups; it now wraps the grouped statement in a subquery.
Migrations¶
- None. No schema change in this release.
Frontend impact¶
- Filter items (and future array-backed landing columns) by tag with
columnName: "tagIds"(UUIDs) orcolumnName: "tags"(names), operatorIN. Each value matches "row has any of these"; send one filter per value inside anORgroup, or a JSON array to a single filter, to match several. NOT_IN/NEmean "row has none of these" and include rows with no tags.- Combining a
tagIdsfilter with a row-level column filter usingoperator: ORin the same group is supported — the row-level leg is promoted intoHAVINGviabool_or(...)so it behaves as a true OR. - Grouped landing-page
totalvalues (items) are now accurate; update any UI that worked around the previously wrong count.
Versioning notes¶
- PATCH bump (
scripts/bump_version.py 1.6.1 --changelog-stub): additive filter capability + bug fixes, no breaking schema change. No deploy-order constraints.