Changelog

View Source

All 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
end

After (0.3.0):

defmodule MyAppWeb.StripeWebhookController do
  use PinStripe.WebhookController
  
  handle "customer.created", fn event -> ... end
end

Migration: 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_version task for fixture version management
  • PinStripe.Test.Mock - High-level mocking helpers for Stripe API testing
    • stub_read/2 - Stub read operations by ID or entity type
    • stub_create/2 - Stub create operations by entity type
    • stub_update/2 - Stub update operations by ID
    • stub_delete/2 - Stub delete operations by ID
    • stub_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_stripepin_stripe
  • Module namespace: TinyElixirStripePinStripe
  • 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:

  1. Update your mix.exs dependency from :tiny_elixir_stripe to :pin_stripe
  2. Replace all TinyElixirStripe module references with PinStripe
  3. Update config keys from :tiny_elixir_stripe to :pin_stripe
  4. Update mix task calls (e.g., mix pin_stripe.install instead of mix 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 task
  • mix tiny_elixir_stripe.gen.handler - Generate webhook event handlers
  • mix tiny_elixir_stripe.sync_webhook_handlers - Sync handlers with Stripe dashboard
  • mix 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