- Shipped
- September 23, 2026 at 7:02 PM UTC
- Author
- Kamo
- Commit
- 13664e8
The states dimension of the campaign audience panel's and drip trigger's lead filter showed nothing checked by default, even though an unset list already means "every state" on the wire — the same "no restriction" convention market/vendor/vendor-product already use. That made the picker look like it was filtering to zero leads rather than to everyone, and gave no quick way to start from "every state" or "none" before hand-picking a few. leadAudienceFilter.ts gains effectiveStates() (what to show checked: the stored list, or every state when it's unset) and withStates() (what to store back: the full set collapses to undefined rather than an explicit fifty-code list, so a lead with a blank state on file still matches "every state" the way an actual absence of a filter does — an explicit IN-list would not). Both panels get a "Select all" / "Deselect all" pair next to the states picker only; the other three dimensions are unchanged, since their empty-by-default framing was already correct.
