Changelog
View SourceAll notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.3.0] - 2025-12-19
Changed
⚠️ BREAKING CHANGE: Simplified webhook handler architecture
Webhook event handlers are now defined directly in your WebhookController instead of a separate WebhookHandler module. This reduces indirection and simplifies the overall architecture.
Before (0.2.x):
defmodule MyApp.StripeWebhookHandlers do
use PinStripe.WebhookHandler
handle "customer.created", fn event -> ... end
end
defmodule MyAppWeb.StripeWebhookController do
use PinStripe.WebhookController,
handler: MyApp.StripeWebhookHandlers
endAfter (0.3.0):
defmodule MyAppWeb.StripeWebhookController do
use PinStripe.WebhookController
handle "customer.created", fn event -> ... end
endMigration: Move your handle declarations from your WebhookHandler module into your WebhookController. Handler modules (for complex handlers) should remain in lib/my_app/stripe_webhook_handlers/ but are now referenced directly from the controller.
[0.2.2] - 2025-12-19
Added
PinStripe.Test.Fixtures- Module for loading realistic Stripe test data- Error fixtures for all HTTP error codes (400, 401, 403, 404, 429, 500, etc.)
- API resource fixtures with caching support
mix pin_stripe.sync_api_versiontask for fixture version management
PinStripe.Test.Mock- High-level mocking helpers for Stripe API testingstub_read/2- Stub read operations by ID or entity typestub_create/2- Stub create operations by entity typestub_update/2- Stub update operations by IDstub_delete/2- Stub delete operations by IDstub_error/3- Stub error responses for any operation
[0.2.1] - 2025-12-19
Fixed
- Webhook handler generator bug: original implementation used text search to validate handler didn't already exist, which picked up examples in the @doc tag.
[0.2.0] - 2025-12-19
Changed
🎉 Complete rebrand from TinyElixirStripe to PinStripe!
The library has been rebranded with a new name that better reflects its sharp, professional approach to Stripe integration. Inspired by the pinstripe suit - clean, elegant, and professional.
- Package name:
tiny_elixir_stripe→pin_stripe - Module namespace:
TinyElixirStripe→PinStripe - Config atoms:
:tiny_elixir_stripe→:pin_stripe - Mix tasks:
mix tiny_elixir_stripe.*→mix pin_stripe.*
This is a breaking change. If you're upgrading from TinyElixirStripe:
- Update your
mix.exsdependency from:tiny_elixir_stripeto:pin_stripe - Replace all
TinyElixirStripemodule references withPinStripe - Update config keys from
:tiny_elixir_stripeto:pin_stripe - Update mix task calls (e.g.,
mix pin_stripe.installinstead ofmix tiny_elixir_stripe.install)
[0.0.2] - 2025-12-18
Added
- Docs with HexDocs
- This changelog
- Hex publish configurations
0.0.1 - 2025-12-18
Added
- Initial release
- Stripe API client built on Req with automatic ID prefix recognition
- Webhook handler DSL using Spark
- Automatic webhook signature verification
mix tiny_elixir_stripe.install- Igniter-powered installation taskmix tiny_elixir_stripe.gen.handler- Generate webhook event handlersmix tiny_elixir_stripe.sync_webhook_handlers- Sync handlers with Stripe dashboardmix tiny_elixir_stripe.update_supported_events- Update supported Stripe events list- Support for both function and module-based webhook handlers
- CRUD operations for common Stripe entities (customers, subscriptions, products, prices, etc.)
- Comprehensive test coverage
- Full documentation and guides