Skip to content

V1.0.0#37

Merged
hotmeteor merged 7 commits into
mainfrom
v-1.0
Apr 30, 2026
Merged

V1.0.0#37
hotmeteor merged 7 commits into
mainfrom
v-1.0

Conversation

@hotmeteor
Copy link
Copy Markdown
Owner

@hotmeteor hotmeteor commented Apr 30, 2026

v1.0.0

This is the first stable release of Receiver. It includes a significant set of new features, bug fixes, new built-in providers, and a complete documentation rewrite.


🆕 New Providers

Five new built-in providers are included:

Provider Driver Verification
Shopify shopify HMAC-SHA256
Twilio twilio HMAC-SHA1
Mailchimp mailchimp URL secret param
SendGrid sendgrid ECDSA SHA-256 (opt-in)
Paddle Billing paddle HMAC-SHA256 + key rotation

🆕 Multiple Events Per Request

getEvent() can now return an array of ['event_name' => $eventData] pairs. When it does, Receiver dispatches a separate handler for each event. This enables providers like SendGrid that batch multiple events into a single webhook request.

Resolves #13, supersedes #26.

🆕 Community Provider Ecosystem

php artisan receiver:make MyProvider --provider now generates both the provider class and a companion ServiceProvider that auto-registers the driver. Package authors can add the service provider to their composer.json auto-discovery to give users zero-configuration installs.

Resolves #8.

🆕 Enhanced Postmark Verification

The Postmark provider now supports three verification strategies, configurable via config/services.php:

  • auth — HTTP Basic Auth (existing behaviour)
  • headers — validate custom request headers
  • ips — validate source IP against Postmark's published webhook IPs

Multiple strategies can be combined. Resolves #7, supersedes #31.

🐛 Bug Fixes

  • GitHub provider: event names no longer have a trailing _ when the payload has no action field (e.g. push, fork, installation). Addresses Fix: Event format with the Github provider #34.
  • Handler naming: event names are fully lowercased before studly conversion, so providers like PayPal that use ALL_CAPS event names (e.g. PAYMENT.AUTHORIZATION.CREATED) resolve to the correct handler class (PaymentAuthorizationCreated). Supersedes lower case all event names to get handler class #22.
  • Stubs: getEvent() return type corrected to string|array; redundant docblocks removed.

📖 Documentation

Complete README rewrite:

  • Added driver-name reference table
  • Explicit config/services.php examples for every provider. Resolves Clarify configuration requirements, provide examples #32.
  • Handler naming convention explained with a mapping table
  • Correct namespace in all code examples
  • Updated CSRF middleware class path (Laravel 11+)
  • Fixed stale queue docs link

🔧 Tooling & CI

  • Laravel 10–13 and PHP 8.2–8.4 tested in CI
  • PHPStan level 5 added as a CI job
  • Laravel Pint added as a CI lint job
  • composer run lint, composer run lint:check, composer run analyse scripts available locally

Upgrade Notes

No breaking changes from prior pre-release versions. Add your provider config entries to config/services.php as documented in the README and you're good to go.

hotmeteor and others added 7 commits April 30, 2026 09:11
…ive events

- Allow getEvent() to return string|array for multi-event payloads (PR #26)
- Lowercase event names before handler class resolution for case-insensitive
  matching (PR #22)
- Rewrite PostmarkProvider::verify() with configurable verification_types:
  'auth', 'headers', and 'ips' modes (PR #31, closes #7)
- Update all provider getEvent() signatures to string|array
- Add Postmark verification tests (8 tests)
- Add multi-event and case-insensitive handler tests
- Add Configuration section to README with per-provider services.php examples
- Document multi-event support in README
- Document Postmark verification_types options

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace test_ prefix convention with native PHPUnit #[Test] attributes
across all test files. Also add return type hints (void) and clean up
redundant @param/@return docblocks on helper methods.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add ShopifyProvider (HMAC-SHA256, X-Shopify-Hmac-Sha256 header)
- Add TwilioProvider (HMAC-SHA1 of fullUrl + sorted POST params)
- Add MailchimpProvider (?secret= query param verification)
- Add SendGridProvider (opt-in ECDSA SHA-256, multi-event batch dispatch)
- Add PaddleProvider (HMAC-SHA256, Paddle-Signature header, key rotation)
- Register all 5 new drivers in ReceiverManager
- Add --provider flag to receiver:make to scaffold companion ServiceProvider
- Add stubs/receiver-provider.stub
- Fix ShopifyProvider getEvent to use ?? '' instead of header default arg
- Add tests for all 5 providers (27 new tests)
- Expand ManagerTest with driver instantiation tests for all 5 new providers
- Update README: new providers in out-of-the-box list and configuration section
- Document --provider flag and community provider packaging pattern in README

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Replace bullet list with a driver-name table for quick reference
- Consolidate Configuration section: group common providers in one block,
  add targeted notes for Mailchimp, SendGrid, and Postmark only
- Restructure Receiving Webhooks: single provider → multiple → fallbacks
- Add handler naming table showing how event names map to class names
- Fix wrong namespace in examples (Receiver\Providers → App\Http\Receivers)
- Remove dangling references and unused `use Auth` imports
- Update queues link from 9.x to current docs/queues
- Fix CSRF middleware class to ValidateCsrfToken (Laravel 11+ compatible)
- Fix route param from driver to provider to match ReceivesWebhooks trait
- Simplify Extending section: generate → define → secure → handshake
  → multi-event → community provider (logical build-up order)
- Use constructor property promotion in handler examples
- Fix TOC anchors and remove duplicate entries

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add laravel/pint and phpstan/phpstan ^2.1 as dev dependencies
- Create phpstan.neon (level 5, src/ only)
- Add lint, lint:check, and analyse scripts to composer.json
- Fix ReceiverManager: add @template to buildProvider() so PHPStan
  resolves concrete return types on all createXxxDriver() methods
- Fix AbstractProvider: remove incorrect @return PHPDoc (native `static` is correct)
- Fix GenerateReceiver::handle(): add missing `return null` at end
- Suppress known trait-unused warning for ReceivesWebhooks in phpstan.neon
- Rewrite .github/workflows/php.yml:
  - Split into three jobs: lint (Pint), analyse (PHPStan), tests
  - Fix matrix: laravel properly listed in the top-level array (10, 11, 12, 13)
  - Add PHP 8.4 to the matrix; exclude Laravel 10 + PHP 8.4
  - Add testbench 11.* mapping for Laravel 13
  - Drop deprecated --no-suggest flag; set fail-fast: false on tests
  - Clean up composer cache key

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…uire

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@hotmeteor hotmeteor merged commit 04b84cb into main Apr 30, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant