Releases

Keep up with regular Scramble releases.
Latest versions:
Scramble: 0.13.43
Scramble PRO: v0.9.16
September 2026
Sep 8, 2026
v0.9.16 PRO

What’s Changed

  • Remove reliance on type’s getOriginal
Sep 8, 2026
0.13.43

Tuple schemas no longer emit additionalItems. Homogeneous unions now serialize as OpenAPI 3.1 type arrays instead of anyOf.

What’s Changed

🚨 Breaking changes 🚨

  • Remove unsupported additionalItems from array schemas by @romalytvynenko in #1264

additionalItems existed in older JSON Schema drafts. OpenAPI 3.1 uses JSON Schema 2020-12, where that keyword is gone — extra items after prefixItems are controlled by items instead.

Scramble was emitting additionalItems: false on fixed-length array / tuple schemas (prefixItems plus minItems / maxItems). Validators such as Redocly rejected the document: Property additionalItems is not expected here.

Tuple length is already pinned with minItems / maxItems, so the extra keyword was both invalid and redundant. It is omitted rather than replaced with items: false.

The generated spec will no longer contain additionalItems. ArrayType::setAdditionalItems() is also gone. This is very unlikely to affect you unless a client or linter depended on that keyword, or you called the setter yourself.

  • Optimize homogeneous union schemas into type arrays by @romalytvynenko in #1269

Unions whose branches are only types (string|int, int|float|string, unconstrained array|string, …) now serialize as a type array instead of anyOf:

{ "type": ["string", "integer"] }

instead of

{ "anyOf": [{ "type": "string" }, { "type": "integer" }] }

anyOf is kept when a branch has extra keywords (enum, const, …). integer is dropped when number is present (JSON Schema: integer is a subset of number), so int|float becomes { "type": "number" }. Empty items: {} on unconstrained arrays is omitted so they can fold into the same form.

This is valid OpenAPI 3.1 and usually renders the same in the UI, but generated clients may change if they treated anyOf and type arrays differently.

Added

  • Infer arithmetic, string concatenation, and clone instead of documenting them as string by @romalytvynenko in #1267

Unknown operands are treated as numeric (int|float) rather than unknown/string. + also documents array union ($a + [] → array). Impossible arithmetic (1 + []) is never. Concat of mixed values keeps enough of the template to guess download MIME from the extension.

Changes

  • Stop treating plain comments above return as response descriptions — only explicit @description, @status, and @body apply by @yugarinn in #1254
  • Serialize string-like | null unions as a nullable string (type: ["string", "null"]) instead of anyOf

Fixes

  • Handle unpacked and implicit array keys in schemas by @romalytvynenko in #1266
  • Fix object type acceptance to respect class hierarchy by @romalytvynenko in #1265
  • Preserve PHPDoc types while refining inferred model attributes by @romalytvynenko in #1263
  • Fix type refining so declared types keep their shape while picking up inferred details (formats, generics, array shapes) by @romalytvynenko in #1268
  • Fix JSON resource model guessing and analyze vendor resource bodies by @romalytvynenko in #1260
  • Document paginate() on mixed as a paginator
  • Bind native self return types to the receiver so chained setters keep their generic

New Contributors

  • @yugarinn made their first contribution in #1254
August 2026
Aug 21, 2026
v0.13.42

What’s Changed

  • Dev tools by @romalytvynenko in #1255
Aug 16, 2026
v0.9.15 PRO

What’s Changed

  • Fix schemas for wrapped nested Laravel Data collections
Aug 16, 2026
v0.13.41

What’s Changed

  • Preserve pagination metadata for resource collection JSON responses by @romalytvynenko in #1251
Aug 11, 2026
v0.13.40

What’s Changed

  • FunctionLikeDeclarationPhpDocDefinitionBuilder: Fix phpdoc parsing, add test by @jrdnrc in #1247
  • Fix Rule::enum on array items replacing array type in OpenAPI spec by @dbrekelmans in #1123
  • Add clearer doc generation warnings you can actually act on by @romalytvynenko in #1126
Aug 6, 2026
v0.13.39

What’s Changed

  • Fix pagination documentation for mixed Scout and Eloquent queries by @romalytvynenko in #1243
  • Preserve inferred model type metadata with compatible PHPDoc properties by @romalytvynenko in #1244
  • Infer Storage downloads as binary streamed responses by @romalytvynenko in #1245
  • Add PHP’s Deprecated attribute support by @romalytvynenko in #1246
Aug 4, 2026
v0.13.38

What’s Changed

  • Add uniqueItems support for the distinct validation rule by @JurianArie in #1240
  • Tip Scramble PRO when Laravel Data or Query Builder is detected by @romalytvynenko in #1241

New Contributors

  • @JurianArie made their first contribution in #1240
Aug 2, 2026
v0.9.14 PRO

What’s Changed

  • Fix Laravel Data casts with multiple date formats
Aug 2, 2026
v0.13.37

What’s Changed

  • Collapse duplicate self types in unions by @romalytvynenko in #1234
  • Avoid redundant work during reference type resolution by @romalytvynenko in #1237
July 2026
Jul 27, 2026
v0.13.36

New features

  • Add eager-loaded relationship analysis for JSON resources by @romalytvynenko in #1188
  • Add property types from PHPDoc support by @chrisvanlier2005 in #1057
  • Infer nullable Eloquent relations from foreign key columns by @romalytvynenko in #1225
  • Add custom casts support for model attributes by @romalytvynenko in #1227

Fixes

  • Preserve nullable JSON resources in documentation by @romalytvynenko in #1228
  • Fix optional fields in JSON resources marked as required in some cases by @romalytvynenko in #1231
  • Fix CI fails by @romalytvynenko in #1232
Jul 27, 2026
v0.9.13 PRO

What’s Changed

  • Document enum morph properties as constants
Jul 25, 2026
v0.9.12 PRO

What’s Changed

  • Fix QueryBuilder params missing on shared helper callers
Jul 22, 2026
v0.9.11 PRO

What’s Changed

  • Fix fatal/wrong schema for DataCollection|Optional properties
Jul 15, 2026
v0.9.10 PRO

What’s Changed

  • Fix query builder indexing when query builders are configured without reassignment, not in a single call chain
Jul 15, 2026
v0.13.35

What’s Changed

  • Resolve references types in self out type builder by @romalytvynenko in #1221
Jul 14, 2026
v0.13.34

What’s Changed

  • Add IgnoreResponse attribute to exclude responses from docs by @romalytvynenko in #1210
  • Add #[Api] attribute for route-level API assignment by @romalytvynenko in #1211
  • Fix file min/max/size/between rules emitting minLength/maxLength by @romalytvynenko in #1212
  • Fix request body parameter order when merging nested rules by @romalytvynenko in #1213
Jul 13, 2026
v0.9.9 PRO

What’s Changed

  • Fix incorrect binding of route parameters
Jul 11, 2026
v0.9.8 PRO

What’s Changed

  • Fix Lazy|recursive properties failing to be documented
Jul 9, 2026
v0.9.7 PRO

What’s Changed

  • Fix custom Query Builder parameter names in docs
Scramble PRO
Comprehensive API documentation generation for Spatie’s Laravel Data, Laravel Query Builder, and other packages.