Releases: EquidnaMX/bird-flock
Release v1.4.0 "Hawk"
Bird Flock v1.4.0 introduces a flexible, vendor-agnostic sender architecture with support for multiple SMS and email providers per channel, plus a brand-new LabsMobile integration.
Release Date: 2026-06-15
Codename: Hawk
Version: 1.4.0
Highlights
- 🔀 Multi-vendor routing: Configure multiple senders per channel (SMS, email) with automatic selection via round-robin or random strategies.
- 📦 Modular vendor configs: Per-vendor config files make it easy to enable/disable providers and switch routing strategies.
- 🚀 LabsMobile SMS: New LabsMobile provider with full webhook support and HTTP client integration.
- 🏗️ Better organization: Senders reorganized by vendor with cleaner contracts and definitions.
- 🔧 SenderDefinitionInterface: Custom vendor definitions can now validate configuration and construct senders with type safety.
- 🎯 Backward compatible: Existing single-vendor setups continue to work unchanged.
Major Features
Vendor-Based Sender Configuration
Define multiple senders per channel in config/bird-flock.php:
'channels' => [
'sms' => [
'strategy' => 'round_robin', // or 'random'
'senders' => [
'twilio' => \Equidna\BirdFlock\Senders\Twilio\TwilioSmsSenderDefinition::class,
'vonage' => \Equidna\BirdFlock\Senders\Vonage\VonageSmsSenderDefinition::class,
'labsmobile' => \Equidna\BirdFlock\Senders\Labsmobile\LabsmobileSmsSenderDefinition::class,
],
],
'email' => [
'strategy' => 'round_robin',
'senders' => [
'mailgun' => \Equidna\BirdFlock\Senders\Mailgun\MailgunEmailSenderDefinition::class,
'sendgrid' => \Equidna\BirdFlock\Senders\Sendgrid\SendgridEmailSenderDefinition::class,
],
],
],Per-Vendor Configuration Files
Each vendor now has its own config file for cleaner setup:
config/bird-flock-twilio.phpconfig/bird-flock-vonage.phpconfig/bird-flock-sendgrid.phpconfig/bird-flock-mailgun.phpconfig/bird-flock-labsmobile.php
Publish them with: php artisan vendor:publish --tag=bird-flock-config
LabsMobile SMS Provider
Full-featured LabsMobile integration:
LabsmobileSmsSender: HTTP-based SMS dispatcher- Webhook controller with request validation
- Complete test coverage
- Integrated with circuit breaker and retry logic
New Contracts
- SenderDefinitionInterface: Enables custom vendor definitions with constructor dependency injection.
- SenderConfigValidatorInterface: Optional validation of vendor-specific configuration at boot time.
Added
- Vendor-based sender configuration with multiple senders per channel.
round_robinandrandomselection strategies for multi-vendor setups.- Per-vendor config files and centralized vendor binding in service provider.
- LabsMobile SMS provider with full webhook integration.
SenderResolverservice for runtime sender instantiation.VendorSelectorservice for strategy-based vendor selection.- Sender-specific definitions and validators.
- Enhanced
HealthServicewith per-vendor circuit-breaker diagnostics. MessageFactoryVendorRoutingTestand comprehensive sender/strategy tests.
Changed
- Sender directory structure: Senders now organized into vendor folders (
Senders/Twilio/,Senders/Vonage/, etc.). - MessageFactory: Simplified to delegate to
SenderResolverfor vendor-agnostic sender creation. - BirdFlockServiceProvider: Extended to merge vendor configs and bind vendor-specific clients.
- ConfigValidator: Enhanced to validate
channels.*.sendersand sender definitions. - Documentation: README and deployment guides updated with vendor-based routing examples.
- Webhook routes: Split into vendor-specific files for better isolation and maintainability.
Fixed
- Batch FlightPlan deduplication now properly checks for existing idempotency keys before dispatch.
- Webhook routing is cleaner and less prone to conflicts.
- Configuration validation catches strategy misconfigurations at startup.
Security
- No security-related changes in this release.
Compatibility
- PHP:
>=8.3 - Laravel/Illuminate:
^10 || ^11 || ^12 || ^13
Migration Guide
No breaking changes — existing configurations work as-is. To adopt vendor-based routing:
- Publish vendor config files:
php artisan vendor:publish --tag=bird-flock-config - Update your
channelsconfiguration to define multiple senders (optional). - Set your preferred
strategy(round_robinorrandom). - Gradual migration is supported; old and new configs can coexist.
References
- Full change history: CHANGELOG.md
- Breaking changes and migration guidance: BREAKING_CHANGES.md
- Deployment instructions: doc/deployment-instructions.md
- API documentation: doc/api-documentation.md
Release v1.3.0 "Falcon"
Bird Flock v1.3.0 focuses on platform compatibility and email rendering flexibility. This release introduces Laravel 13 support, adds inline email attachment handling for Mailgun and SendGrid flows, and refreshes core operational documentation.
Release Date: 2026-06-05
Codename: Falcon
Version: 1.3.0
Highlights
- Official Laravel 13 compatibility while preserving Laravel 10-12 support.
- Inline email attachment support (
inlinedisposition + CID) in sender and mailable conversion flows. - Documentation refresh across deployment, API/routes, commands, architecture, monitoring, and testing guides.
Added
- Laravel 13 support in Composer constraints.
- Inline attachment capabilities for Mailgun and SendGrid sender payloads.
- Embedded-asset collection support in
MailableConverterfor inline email rendering workflows.
Changed
- Composer constraints expanded to allow Laravel/Illuminate 10, 11, 12, and 13.
- Removed direct
symfony/uiddependency. - Relaxed
psr/logrequirement from exact3.0to^3.0. - Root and package docs were rewritten for implementation-aligned guidance.
Fixed
- Attachment validation now rejects invalid dispositions and inline attachments without
content_id. - Test support fakes were adjusted for Laravel 13 contract compatibility.
Security
- No security-related changes in this release.
Compatibility
- PHP:
>=8.3 - Laravel/Illuminate:
^10 || ^11 || ^12 || ^13
References
- Full change history: CHANGELOG.md
- Breaking changes and migration guidance: BREAKING_CHANGES.md
v1.2.0 - Condor
Release v1.2.0 "Condor"
Bird Flock now officially supports Laravel 12.x while remaining compatible with Laravel 10.x and 11.x. This release widens Composer constraints and updates documentation to reflect broader framework support. No breaking changes.
Release Date: December 15, 2025
Codename: Condor
Version: 1.2.0
Highlights
- Laravel 12 compatibility
- Composer constraints widened for
laravel/frameworkandilluminate/database - README updated to state Laravel 10–12 support
Added
- Official compatibility with Laravel 12.x.
Changed
- Composer constraints:
laravel/framework ^10 || ^11 || ^12,illuminate/database ^10 || ^11 || ^12. - Documentation updated for supported versions.
Reliability Features
- Circuit Breakers: Automatic provider failure detection and fail-fast
- Dead-Letter Queue: Capture failed messages for manual replay
- Exponential Backoff: Intelligent retry with jitter (1s–60s)
- Webhook Processing: Automatic status updates from provider callbacks
Developer Tools
- 6 Artisan commands for testing and management
- 2 health check endpoints
- 8 webhook endpoints with rate limiting
- Comprehensive event system for extensibility
Observability
- PII-masked structured logging
- Metrics collection interface
- Circuit breaker status monitoring
- Dead-letter queue statistics
📝 Documentation
This release includes comprehensive documentation (10+ detailed guides):
- CHANGELOG.md - Complete project history
- BREAKING_CHANGES.md - Breaking changes guide
- Deployment Instructions
- API Documentation
- Routes Documentation
- Artisan Commands
- Architecture Diagrams
- Business Logic & Core Processes
- Monitoring Guide
- Tests Documentation
- Open Questions & Assumptions
- Mailable Usage ✨ NEW — End-to-end guide for Mailables, with examples in
doc/examples/
🔧 What's Included
Files Added/Updated in This Release
- ✨
doc/mailable-usage.md— Comprehensive Mailables guide - ✨
doc/examples/— Working example Mailable, templates, usage script - ✨
CHANGELOG.md— Updated for v1.1.0 (Albatross) - ✨
RELEASE_NOTES.md— This file updated for v1.1.0
Version Updates
- ✨
composer.json— Version remains aligned to tags (update when tagging)
Recent Additions
- ✨ Mailables conversion pipeline and dispatch API
Fixed
- Consistency in documentation around framework versions.
Security
No changes.
Links
- See CHANGELOG for full history: CHANGELOG.md
- Migration guidance (breaking changes): BREAKING_CHANGES.md
🚦 Testing
Unit Test Coverage
- ✅ Core dispatch logic and idempotency
- ✅ Circuit breaker behavior (including concurrency tests)
- ✅ Job processing and retry logic
- ✅ All provider sender implementations
- ✅ Webhook processing and signature validation
- ✅ Support utilities (backoff, normalization, validation)
Test Framework: PHPUnit 10.x
Coverage: ~75-85%
Test Speed: < 100ms per test
Run tests:
./vendor/bin/phpunit📦 Dependencies
Production Dependencies
- Laravel Framework 11.x (Illuminate 10.x–12.x supported)
- Symfony UID 7.x
- Guzzle HTTP 7.x
- Twilio SDK 6.x
- SendGrid 7.x
- Vonage Client 4.2+
- Mailgun PHP 4.3+
Development Dependencies
- PHPUnit 10.x
- PHPStan 1.10+
- PHP_CodeSniffer 4.x
🔮 Future Roadmap
See Open Questions & Assumptions for planned features:
- Multi-tenancy support
- Multi-provider routing and failover
- Message cancellation for scheduled sends
- Rate limiting per recipient
- Idempotency key expiration policies
- Template management system
- GDPR/PII compliance helpers
📄 License
MIT License - See LICENSE file
👤 Author
Gabriel Ruelas
Email: gruelas@gruelas.com
Organization: Equidna
🙏 Thank You
Thank you for using Bird Flock! We're excited to see what you build with it.
For issues, questions, or contributions:
- GitHub Issues: https://github.com/EquidnaMX/bird-flock/issues
- Email: gruelas@gruelas.com
🎯 Next Steps
- ⭐ Star this repository
- 📖 Read the Deployment Instructions
- 🚀 Deploy to production
- 📊 Set up monitoring using the Monitoring Guide
- 🐛 Report issues or request features on GitHub
Happy Messaging! 🚀
v1.1.0 - Albatross
Release v1.1.0 - Albatross
Motivation
Introduce first-class support for Laravel Mailables to streamline email dispatch while retaining Bird Flock's reliability features (idempotency, retries, circuit breakers, DLQ).
Summary of Changes
Added BirdFlock::dispatchMailable() API
Implemented Support/MailableConverter to convert Mailables → FlightPlan
Automatic HTML→text fallback when only HTML view is provided
Attachment support (base64 encoding and metadata)
Documentation: doc/mailable-usage.md with detailed examples
Examples: doc/examples/WelcomeEmail.php, welcome.blade.php, welcome-text.blade.php, usage-example.php
Updated CHANGELOG.md with v1.1.0 (Albatross)
Updated RELEASE_NOTES.md to v1.1.0
Testing Checklist
All unit tests pass: ./vendor/bin/phpunit
Static analysis clean or acceptable: vendor/bin/phpstan analyse
Example scripts run without errors
Webhook endpoints unaffected; signatures still validated
Queue worker processes Mailables correctly
Risk / Impact
Low risk; changes are additive. Email dispatch via Mailable classes now supported alongside existing FlightPlan-based dispatch. Ensure payload size limits are respected for large attachments.
Links
CHANGELOG.md
RELEASE_NOTES.md
BREAKING_CHANGES.md (none for this release)
Release v1.0.0 - Phoenix
🎉 Release v1.0.0 - "Phoenix"
First Stable Release
This is the inaugural stable release of Bird Flock, a production-ready multi-channel messaging bus for Laravel applications.
Release Date: November 30, 2025
Codename: Phoenix
Version: 1.0.0
🚀 What is Bird Flock?
Bird Flock is a comprehensive Laravel package that orchestrates reliable outbound messaging across SMS, WhatsApp, and Email channels. It provides enterprise-grade features including idempotency, circuit breakers, dead-letter queues, and automatic retry handling.
Key Highlights
✅ Multi-Channel Support: SMS (Twilio, Vonage), WhatsApp (Twilio), Email (SendGrid, Mailgun)
✅ Production-Ready: Circuit breakers, DLQ, exponential backoff, comprehensive error handling
✅ Developer-Friendly: Simple API, extensive documentation, CLI commands for testing
✅ Observable: Structured logging, metrics collection, health check endpoints
✅ Secure: Webhook signature validation, PII masking, HTTPS enforcement
✅ Well-Tested: 75-85% unit test coverage with PHPUnit 10.x
📦 Installation
composer require equidna/bird-flock
php artisan vendor:publish --tag=bird-flock-config
php artisan migrate🎯 Core Features
Messaging Capabilities
- Idempotency: Prevent duplicate sends with unique keys
- Batch Dispatch: Send up to thousands of messages efficiently
- Scheduled Delivery: Schedule messages for future delivery
- Multi-Provider: Seamlessly switch between Twilio, SendGrid, Vonage, Mailgun
Reliability Features
- Circuit Breakers: Automatic provider failure detection and fail-fast
- Dead-Letter Queue: Capture failed messages for manual replay
- Exponential Backoff: Intelligent retry with jitter (1s–60s)
- Webhook Processing: Automatic status updates from provider callbacks
Developer Tools
- 6 Artisan commands for testing and management
- 2 health check endpoints
- 8 webhook endpoints with rate limiting
- Comprehensive event system for extensibility
Observability
- PII-masked structured logging
- Metrics collection interface
- Circuit breaker status monitoring
- Dead-letter queue statistics
📝 Documentation
This release includes comprehensive documentation (9 detailed guides):
- CHANGELOG.md - Complete project history ✨ NEW
- BREAKING_CHANGES.md - Breaking changes guide ✨ NEW
- Deployment Instructions
- API Documentation
- Routes Documentation
- Artisan Commands
- Architecture Diagrams
- Business Logic & Core Processes
- Monitoring Guide
- Tests Documentation
- Open Questions & Assumptions
🔧 What's Included
Files Added in This Release
- ✨
CHANGELOG.md- Authoritative changelog (MUST be respected by all AI agents) - ✨
BREAKING_CHANGES.md- Breaking changes documentation and migration guides - ✨
RELEASE_NOTES.md- This file
Version Updates
- ✨
composer.json- Added"version": "1.0.0"
Recent Bug Fixes (Included)
- 🐛 Fixed
DispatchMessageJobdelay calculation (milliseconds → seconds conversion) - 💅 Complete PHPDoc standardization across 48+ files
- 🔒 Enabled webhook signature validation by default
- 🔒 Replaced
Cache::forever()with TTL-based caching
🎨 Code Quality Improvements
PHPDoc Standardization
- ✅ File-level DocBlocks added to all 48+ PHP files
- ✅ Aligned all PHPDoc tags per PHPDocStyle.instructions.md
- ✅ Added missing
@throwsdocumentation - ✅ Fixed constructor DocBlocks for promoted properties
- ✅ PHPStan errors reduced from 26 → 13
Code Style
- ✅ Consistent trailing commas in multi-line constructs
- ✅ Anonymous class spacing normalization
- ✅ Empty constructor body formatting fixes
🔐 Security Enhancements
- ✅ Webhook signature validation enabled by default for all providers
- ✅ PII masking in all log statements (phone numbers, email addresses)
- ✅ Circuit breaker cache TTL (24 hours) to prevent cache bloat
- ✅ Rate limiting on webhook endpoints (60 requests/min per IP)
📋 System Requirements
- PHP: 8.3 or higher
- Laravel: 11.x
- Database: MySQL 5.7+, PostgreSQL 11+, or SQLite 3.26+
- Cache: Any Laravel-supported driver (Redis recommended)
- Queue: Any Laravel queue driver (Redis recommended)
🚦 Testing
Unit Test Coverage
- ✅ Core dispatch logic and idempotency
- ✅ Circuit breaker behavior (including concurrency tests)
- ✅ Job processing and retry logic
- ✅ All provider sender implementations
- ✅ Webhook processing and signature validation
- ✅ Support utilities (backoff, normalization, validation)
Test Framework: PHPUnit 10.x
Coverage: ~75-85%
Test Speed: < 100ms per test
Run tests:
./vendor/bin/phpunit📦 Dependencies
Production Dependencies
- Laravel Framework 11.x (Illuminate 10.x–12.x supported)
- Symfony UID 7.x
- Guzzle HTTP 7.x
- Twilio SDK 6.x
- SendGrid 7.x
- Vonage Client 4.2+
- Mailgun PHP 4.3+
Development Dependencies
- PHPUnit 10.x
- PHPStan 1.10+
- PHP_CodeSniffer 4.x
🔮 Future Roadmap
See Open Questions & Assumptions for planned features:
- Multi-tenancy support
- Multi-provider routing and failover
- Message cancellation for scheduled sends
- Rate limiting per recipient
- Idempotency key expiration policies
- Template management system
- GDPR/PII compliance helpers
📄 License
MIT License - See LICENSE file
👤 Author
Gabriel Ruelas
Email: gruelas@gruelas.com
Organization: Equidna
🙏 Thank You
Thank you for using Bird Flock! We're excited to see what you build with it.
For issues, questions, or contributions:
- GitHub Issues: https://github.com/EquidnaMX/bird-flock/issues
- Email: gruelas@gruelas.com
🎯 Next Steps
- ⭐ Star this repository
- 📖 Read the Deployment Instructions
- 🚀 Deploy to production
- 📊 Set up monitoring using the Monitoring Guide
- 🐛 Report issues or request features on GitHub
Happy Messaging! 🚀