Laravel 10.40, weekly updates, and 🔥 tip

Laravel 10.40

Happy 2024 everyone! Today is the first release of the year bringing us to Laravel 10.40. Here are the highlights:

  • Expand Gate::allows and Gate::denies in #49503
  • Fixes the Arr::dot() to properly handle indexes array in #49507
  • Improve numeric comparison for custom casts in #49504
  • Add Session::except() in #49520
  • Add Number::clamp() in #49512
  • Make ComponentAttributeBag Arrayable in #49524
  • Update AsArrayObject cast to use ARRAY_AS_PROPS flag in #49534
  • Make the Schema Builder macroable in #49547
  • Add assertViewEmpty in #49558
  • Add assertCount to QueueFake in #49609
  • Add Str::apa for APA style title casing in #49572

You may review the full branch diff on GitHub for a complete list of changes.

This version bump and update is automated for subscribers to a Shifty Plan. If you don't have one of those, be sure to bump your constraint and run composer update to get the latest features.

Weekly Journal

The last few weeks have mostly been working on the side-project. While launched, I'm still quietly alpha testing it and working through the bugs and final tweaks. I hope to share the public beta next week.

I started this week off with the great Shifty Plan migration of 2024. Boy, what a headache. Despite my efforts to make this as transparent and as seamless as possible, there was still confusion and a few hiccups.

Changing prices, especially for a subscription, is challenging. Unfortunately Stripe adds a layer of complexity when the plan prices have different billing cycles. I also messed up the differences between active, onGracePeriod, and cancelled methods in Cashier. Anyway, after a couple tough emails and several prorated refunds, I think it's settling down.

With the rest of the week and next I plan to get pretty serious on the Laravel 11.x Shift.

🔥 Tip

I think it's time for a .laravel or laravel.json project level config file.

Having such a file would not only remove the debate about defaults, but allow you to configure many artisan command options. It could also store options for community packages and services.

Imagine just being able to run artisan make:model Post and Laravel knows what you want to generate without passing a bunch of options, like -test, --pest, --api.

I posted this on Twitter, so let me know if you like the idea.