Rails 8.1.4 fixes a number_to_human_size crash above a terabyte and adds petabyte to zettabyte units
Rails 8.1.4 is out. The announcement itself is a list of gem checksums and links, so the content is in the release notes, and it is a patch release dominated by Active Support.
Three of the fixes are worth naming. number_to_human_size crashed for sizes above a terabyte, which is fixed by supporting petabyte, exabyte and zettabyte units. ActiveSupport::JSON.decode has been made compatible with the upcoming json 3.0 gem. And HashWithIndifferentAccess#filter was returning a plain Hash; it now keeps its own class, which is the kind of quiet type change that only shows up two call frames later.
The rest is the usual patch-release census: the debug error page failed to render SyntaxErrors carrying multi-line messages, Range#sole raised NoMethodError, Cache::FileStore raised NameError when fileutils had not already been loaded, Enumerable#in_order_of with filter: true dropped nil elements that were explicitly named in the series, number_to_human and number_to_human_size crashed when :precision was nil, and InheritableOptions#to_h did not recursively flatten nested parents.

What it means
The terabyte fix is a good reminder of where these bugs live. number_to_human_size is a display helper nobody thinks about, and the ceiling was invisible until somebody's storage report crossed it — at which point a page that renders a number crashes instead. Nothing about the surrounding code changed; the data grew.
The HashWithIndifferentAccess#filter change is the one to read carefully before upgrading. A method that used to hand back a plain Hash now hands back the indifferent-access class, and any code that was relying on the downgrade — deliberately or by accident — behaves differently afterwards. That is the correct fix and it is still a behavioural change in a patch release, so it belongs on the list of things to grep for rather than discover.