v3.87.0 (2026-07-31)
π Features
- storage-azure: client uploads with chunkLargeFiles can now support files larger than 5gb (#17319) (3c00a39)
π Bug Fixes
- preserve parent localization through tabs 3.x (#17591) (9c8d636)
- replace image-size with image-dimensions dependency for upload dimensions (#17571) (2a99a01)
- forward locale in count and countGlobalVersions (3.x) (#17547) (e042561)
- pass id to delete access control on soft delete in updateByID (#17529) (a539f5b)
- prefer draft titles in by folder view (#17412) (ef8a6a5)
- arrays and blocks should handle null values, v3 backport (#17278) (2a69863)
- db-mongodb: error on null values in arrays and blocks (#17190) (249f8df)
- drizzle: validate companion table name length against 63-char limit (#17563) (fd629f2)
- drizzle: dedupe reused localized block tables (#17430) (3e8191c)
- plugin-multi-tenant: apply tenant on confirm (#17350) (09e01df)
- storage-vercel-blob: allow overwriting existing blob keys (#17385) (fc2572e)
- templates: prevent unauthenticated draft-mode access in website preview route (#17472) (0c2e9a8)
- templates: mark website button as client component for radix-slot context (#17474) (981b282)
- ui: resolve named-tab field permissions in bulk edit field select (3.x backport of #17523) (#17524) (2371624)
- ui: keep folder create drawers open during autosave (#17421) (bf72bda)
- ui: handle undefined field admin components (#17388) (5157c72)
π Documentation
- remove deprecated root endpoint property (#17570) (6402daa)
- accessibility banner fix (#17431) (29dd43c)
- fix link in live preview dynamic url section (#17340) (cc81ef0)
- document exported TypeScript type helpers for plugins (#17336) (d4d029f)
- plugin-mcp: fix broken Claude Code link (#17502) (21e24ca)
π§ͺ Tests
- richtext-lexical: create dev user first in seed to fix flaky e2e (3.x backport of #17507) (#17568) (0f6c1b3)
βοΈ CI
π‘ Chores
π€ Contributors
- Dan Ribbens (@DanRibbens)
- Paul (@paulpopus)
- Patrik (@PatrikKozak)
- Nate Lentz (@nathanlentz)
- Kacper Zawojski (@zawoj)
- Marc Maceira (@marcmaceira)
- Jarrod Flesch (@JarrodMFlesch)
- Sean Zubrickas (@zubricks)
- RaΕit Akyol (@rasitakyol)
- Jessica Rynkar (@JessRynkar)
- Elliot DeNolf (@denolfe)