Skip to content

Latest commit

 

History

History
174 lines (143 loc) · 9.62 KB

File metadata and controls

174 lines (143 loc) · 9.62 KB

Sendportal Core

4.0.1 - 2026-04-15

Added

  • Add sendportal_message_lookup table for partition-aware webhook queries
  • Add MessageLookup model
  • Add composite indexes on sendportal_tag_subscriber for covering queries
  • Add Makefile for running composer via Docker
  • Add partition messages and optimize tag subscriber documentation

Optimized

  • Partition sendportal_messages table by HASH(source_id) with 50 partitions
  • Resolve source_id from lookup table in webhook handlers for partition pruning
  • Resolve source_id from lookup table in subscriptions and webview controllers
  • Drop unused id column from sendportal_tag_subscriber, promote composite PK
  • Write to message lookup table on send for future webhook resolution

Fixed

  • Fix foreign key constraint when dropping index on sendportal_tag_subscriber
  • Fix foreign key check during messages table partitioning migration
  • Fix MariaDB compatibility: split ALTER and PARTITION BY into separate statements

4.0.0 - 2025-10-28

Added

  • Add name tag as alias for first_name
  • Send campaign name as email header
  • Add name filter for campaign API
  • Add API endpoint to sync multiple subscribers
  • Add API endpoint for campaign statistics
  • Add API endpoint to send test email
  • Make scheduled command output configurable
  • Record SES bounce failure reason
  • Add links to completed campaigns and subscribers on dashboard widgets
  • Delete specific tag when campaign was deleted
  • Cache subscriber growth chart
  • Cache campaigns stats
  • Return unsubscribed datetime and event for subscribers API
  • Include bounced count and sent ratios on campaign stats
  • Show all tags conditionally on preview page
  • Format subscribers count in tag list
  • Disable email service quota check temporarily when dispatching campaigns
  • Redispatch campaigns in sending status

Fixed

  • Fix SES quota API
  • Fix SES email adapter
  • Set correct queue for SES webhook listener
  • Fix missing hash value on subscriber sync
  • Fix query should take workspace as consideration
  • Fix detach tags before deleting campaign
  • Fix date format on campaigns report
  • Remove unused query on draft campaigns index
  • Fix use default timezone to avoid tz returning timezone name
  • Fix wrong layout template
  • Fix campaign stats API pagination
  • Fix show total subscribers for each tag in preview

Optimized

  • Optimize subscriber sync queries and memory usage (lazy collections)
  • Optimize campaign statistics query (count-only queries, remove eager loads)
  • Optimize campaign stats API
  • Lower pagination row per page to reduce query time
  • Limit recent completed campaigns widget on dashboard
  • Remove tags from subscriber list page

3.0.0 - 2024-04-18

  • Upgrade dependencies to Laravel V11 (#194)

2.0.3 - 2021-07-05

  • Self-host CSS and JS assets (#144)
  • Handle merge content and subject when subscriber first name or last name are null (#143)
  • Add german translation (#140)
  • PHP 8: Bug fix for str_ireplace - empty values (#133)
  • Update GitHub workflow for PHP CS Fixer v3 (#130)
  • Update dependencies

2.0.2 - 2021-04-30

  • Add matrix strategy to cover all supported php versions (#127)
  • Tag Pagination (#126)
  • Keep query string for subscribers pagination (#122)
  • Support PHP 8 (#120)
  • Update dependencies

2.0.1 - 2021-03-08

  • Message subject tags (#114)
  • Add SMTP driver (#112)
  • Split campaigns index (#111)
  • Delete failed messages on subscriber deletion (#110)
  • Fix rename segments to tags migration (#115)
  • Fix table prefixing in raw query (#107)

2.0.0 - 2021-02-08

  • Allow Core to be installed as a package in an existing project (#85)
  • Bump Laravel to v8 (#103)

1.0.10 - 2020-10-15

  • Resolve invalid message issue (#87)

1.0.9 - 2020-10-09

  • Set Subscriber unsubscribed_at via API (#83)
  • Adjust quota service (#82)
  • Ensure template names are unique (#81)
  • Gitignore php_cs.cache (#80)
  • Validate imported subscribers (#79)
  • Added ability to delete draft messages (#78)
  • Fix campaign count formatting (#77)
  • Make password hidden in setup command (#76)
  • Filter subscribers by segment (#75)
  • Move ping route to controller (#73)
  • Default campaigns to send to all (#71)
  • Validate segments when creating a campaign (#70)
  • Add GUI setup process (#68)
  • Clean up template deletion (#67)
  • Add ability to cancel campaigns (#66)
  • Add backslash to language files (#65)

1.0.7 - 2020-08-14

  • Add ability to delete a subscriber (#60)
  • Fix behaviour that removed subscribers on segment update (#61)
  • Add ability to test an e-mail service (#62)

1.0.6 - 2020-08-07

  • Add GH action for php-cs (#35)
  • Add Campaign Endpoints to API (#40)
  • Uniform mail adapters send method (#51)
  • Add Sqlite support and defaults the test suite to use the sqlite database (#52)
  • Fix count unique opens per period in Postgres (#53)
  • Bump elliptic from 6.5.2 to 6.5.3 (#55)
  • add from name to outgoing emails (#56)
  • add mailjet support (#57)

1.0.5 - 2020-08-03

  • bump lodash version (#44)
  • fix primary key when chunking on segments (#54)

1.0.4 - 2020-07-21

  • fix SES adapter (#42)

1.0.3 - 2020-07-11

  • added CHANGELOG.md (#39)
  • added API for templates (#38)
  • add validation for deleting templates that are in use (#37)
  • add Template API endpoints (#38)
  • added ability to delete segments (#36)
  • handle null campaign content (#34)

1.0.2 - 2020-06-22

  • changed setup command success outputs to use info instead of line #33)
  • increased content length in the campaign and template tables (#32)
  • replaced relative URLs with route helpers when linking to the dashboard (#29)
  • renamed and cleaned up model factories (#31)

1.0.1 - 2020-06-11

  • fixed dashboard subscriber growth chart in PostgreSQL environments (#15)
  • apply correct namespace to layouts that are extended in subscriber/unsubscribe views (#16)
  • remove deprecated helper methods (#17)
  • fix database constraint error when dispatching campaigns in environments that use the SES provider (#18)
  • fix subscriber email validation rule that was failing in PostgreSQL environments (#19)
  • fix behaviour surrounding the dispatch of scheduled campaigns (#20)
  • fix registration toggle (#21)
  • fix bold text rendering in subscriber/unsubscribe views (#27)

1.0.0 - 2020-06-09

  • initial release