• v0.14.0 7424035a48

    vmanne-poc released this 2026-10-19 12:02:39 -04:00 | 15 commits to main since this release

    Upgrading: back up the database first. Two migrations run on start:
    contact_groups (additive: groups, memberships, and form group links) and
    campaign_audience (campaign include/exclude targets and the audience
    recorded at send time). The second one moves each campaign's segmentId
    into the new audience (unsent campaigns) or the recorded audience (sent
    campaigns) and then drops the segmentId column.

    Added

    • Groups (#55): hand-managed lists of contacts per project, with a name
      (unique ignoring case) and description, member counts, and a Groups page
      and group page with paged, searchable members. Add or remove contacts by
      id (up to 1,000) or everyone matching a contacts filter (up to 100,000),
      rate-limited by POSTAK_RATE_LIMIT_BULK. At most 500 groups per project.
    • Contact profile (#56): the contact page shows the contact's groups as
      chips you can remove, adds them to an existing or new group, and lists the
      segments they match right now.
    • Contacts list (#57): a group filter (also on export), a Groups column,
      row and page selection, "Select all N contacts that match", and bulk
      "Add to group" / "Remove from group".
    • Import, export, and forms (#58): CSV import reads a groups column
      (names separated by |), can create missing groups, and can add everyone
      in the file to chosen groups. Exports gain a groups column. Sign-up forms
      can add new subscribers to groups (on confirmation for double opt-in).
    • Campaign audiences (#59): send to any of several groups and segments,
      leave out others, and see a live count. Everyone is emailed once.
      Confirmations spell out the audience, and the report shows what a
      campaign was sent to. Groups and segments used by unsent campaigns can't
      be deleted.
    • Segment group rule (#60): "Group is in / is not in" conditions. The
      builder's rule containers are now called blocks.
    • Phase 12 review fixes (#61): test emails use sample data (Jane Doe) by
      default, or a contact you pick, and say whose data was used. Duplicate
      keeps the web view setting (with a new address) and the audience.

    Changed

    • Contact and segment CSV exports have a groups column after
      subscribed_at. A custom data key named groups is no longer exported as
      its own column.
    • CSV columns named groups or group are now read as group names, not
      custom fields. Rename the column to keep it as a custom field.
    • For sent campaigns, segmentId is historical: it comes from the audience
      recorded at send time and may refer to a segment that has since been
      deleted.
    • segmentId on campaigns is deprecated in favour of groupIds,
      segmentIds, excludeGroupIds, and excludeSegmentIds. It is still
      accepted on create, update, and GET campaigns/audience.

    PR #62.

    Downloads