Skip to content

Sync Laravel updates: #58017 → #58251 - #574

Merged
binaryfire merged 33 commits into
0.4from
laravel-parity-58009
Sep 9, 2026
Merged

Sync Laravel updates: #58017 → #58251#574
binaryfire merged 33 commits into
0.4from
laravel-parity-58009

Conversation

@binaryfire

Copy link
Copy Markdown
Member

Laravel updates

  • #58017, #58147 — Complete command-discovery regression coverage through the real console kernel. Retain valid commands whose names end in Test, exclude PHPUnit classes, and preserve Symfony command support. Use disposable application fixtures and an owned autoloader.
  • #58019 — Clarify schema column descriptions. Text limits count bytes, and the listed integer widths, unsigned ranges and text capacities apply to MySQL and MariaDB. Preserve SQL generation across all supported databases.
  • #58037, #50269 — Complete native numeric casts in input getters and file-size rules, with precise file-size return types. Preserve existing rounding and invalid-suffix behavior. Fix fractional multi-attribute collection sorting as described below.
  • #53665, #60466, #60486, #60507, #60536 — Complete callback return-type inference for shared input and locale helpers, including the current type fixtures and missing validated-input enum test. Document Fluent's typed retrieval methods. Preserve coroutine-local locale restoration and correct the enum-array fixtures that read the wrong keys.
  • #58040, #59309 — Complete exception-renderer query tests, including exact query limits and truncation. Correct the upstream truncation fixture so it actually reaches the limit. Preserve coroutine-local query storage and existing multibyte coverage.
  • #58048 — Document enum cases in translation replacements: backed values, unit-enum case names and the precedence of custom formatting callbacks. The implementation and upstream runtime assertions were already present.
  • #58052, #58055 — Complete package references for the existing reflection split. Add minimal upstream READMEs for reflection, conditionable and macroable so future updates can identify their source.
  • #58054 — Document HTTP request attributes for choosing fake responses and asserting requests. Attributes remain local to the client; they are not sent to the remote server.
  • #58090, #58232, #58684, #60663 — Port synchronous and asynchronous HTTP return-type inference and the complete current type fixture, including QUERY. Fresh factory requests infer a response; asynchronous requests infer a promise. Preserve subclass identity, native signatures and Hypervel's coroutine transport. Keep unknown-state references conservative, update the Http facade and remove redundant Saloon type narrowing.
  • #58110 — Complete collection visibility merging for both arrays and strings. Normalize string attributes before forwarding to the model's array-only methods, retaining the original array assertions and adding the missing string cases.
  • #58115 — Restore the current HTTP response tap regression and macro result assertion while retaining existing chaining coverage. Link the response documentation to the existing helper explanation.
  • #58118, #60672 — Update the release auto-commit action to a pinned current revision. Correct version preparation for the typed application constant and the 0.4 release branch. The first release still requires the component repositories to have current 0.4 split branches; this PR does not run a release or split.
  • #58123 — Give the queue failover event's job payload its supported object|string type and retain the upstream constructor descriptions. Preserve parameter names, public properties and guarded event dispatch.
  • #58152 — Allow null to disable pruning when constructing a database lock. Preserve resolver-based connection access so locks do not retain pooled connections from another coroutine. Document the empty-array opt-out for store configuration, where null still selects the default odds.
  • #58059 — Restore both current-time date-rule tests and all assertions for past, future, nowOrPast and nowOrFuture. Adapt the expected strings to Hypervel's existing CSV rule serialization.
  • #58176 — Complete enum-aware collection callback contracts and eager/lazy grouping type fixtures. Include supported boolean, null and Stringable keys, and correctly describe lazy groups as ordinary collections while preserving eager collection subclasses. Remove obsolete type suppressions without changing runtime behavior.
  • #58088 — Correct after-response callback annotations to accept the values the existing loop already permits. Retain nullable captured requests for custom clients, response replacement and synchronous fluent inference. Add type coverage without changing callback execution or ownership.
  • #58164 — Correct pivot-timestamp documentation to cover renamed and disabled columns. Explain the timestamp-column method overrides needed by custom pivot models instead of claiming both columns are always required.
  • #58187, #58191 — Remove unused mail-render and job-failure tuple assignments. Restore current upstream invocation checks in null-key relationship tests, preserving every behavioral assertion and Hypervel's extra null-foreign-key coverage.
  • #58204 — Document the guest middleware's multi-guard static constructor and equivalent middleware alias. Existing request-local guard behavior and upstream assertions remain unchanged.
  • #58210 — Normalize APP_URL before appending the public filesystem's storage path. Handle trailing-slash application subpaths and absent environment values in shipped configuration, avoiding extra work on each generated URL. Correct the documentation example and exercise the real public disk adapter.
  • #58107, #58385, #58389 — Complete Auth facade metadata and current session-authentication assertions. Retain Hypervel's HMAC-only remember-cookie behavior and explicitly require custom guards used with auth.session to provide hashPasswordForCookie. Document extending SessionGuard; intentionally omit legacy raw-hash and missing-method fallbacks. Preserve concrete guard overrides in the middleware.
  • #19843, #25167, #25301, #42316 — Reconcile remember-cookie history and remove the obsolete serialized-cookie decoding branch. Hypervel has no legacy cookies from that transition. Preserve current signatures, cached segment parsing and valid custom trailing segments without adding another cookie format or fallback.
  • #61326, #58156, #58222 — Add optional query binding masking through DB_MASK_BINDINGS on all supported SQL connection configurations. Leave placeholders in the SQL appended to exception messages while preserving original database errors, binding accessors, raw SQL and query events. Normalize the setting once at connection construction, including direct PDO connections. Complete explicit read/write connection event coverage and update the README workflow badge.
  • #58241, #58343, #58459 — Complete session enum-key behavior and documentation. Fix deletion of unrelated case-name keys, accept enum keys through the global session() helper, and preserve existing flash, presence-check and coroutine-local storage behavior.
  • #58230 — Complete native ModelInfo property types, current model-inspection metadata and upstream assertions. Preserve public writable properties, ArrayAccess and direct construction. Correct collection type parameters and share the model template with the array representation.
  • #60745, #53563, #58818 — Complete collection-operation updates across generators, Eloquent, process assertions, bus/queue fakes, broadcasting, logging and SES v2. Use native array operations where the input is already an array and short-circuit collection predicates where only existence matters. Retain null-key validation, chain checks and existing runtime adaptations. Remove redundant BackedEnum type arms without dropping backed-enum support.
  • #61193, #61197, #60947 — Add ordered process assertions and array-command support across process assertion methods. Check recording counts before comparing commands, preserve strict array matching and port the complete ordered, array and falsy-command regressions. Update the Process facade and adapt the current process documentation.
  • #58246, #58251 — Document enum cache keys and both Redis command listeners. Restore the upstream exception expectation so a failure event alone cannot satisfy the test if the command exception is swallowed. Preserve pooled cleanup, cancellation handling and guarded event dispatch; no runtime source changes are needed.

Additional Hypervel fixes

  • Preserve fractional values in multi-attribute numeric collection sorting. Integer casts previously turned different prices or scores into ties. Compare floats in the existing comparator, matching native numeric sorting while preserving keys, secondary ordering and lazy collection behavior.
  • Render Htmlable text views consistently in mailable assertions and real delivery. Values implementing toHtml() without __toString() could be sent successfully but failed assertion rendering. Reuse the existing conversion and preserve locale handling and cached rendering.
  • Correct populated enum-array fixture lookups in Fluent and Request tests. The old singular keys were absent, so the tests passed without exercising invalid values or non-backed enums.
  • Preserve dollar signs, backslashes and question marks inside displayed query bindings. Substitute into the original SQL once instead of repeatedly processing already-inserted values. This changes exception-page display only and adds no SQL parser or database work.
  • Correct the JSON:API compound-resource example to use the actual blog_posts type name.
  • Add the missing DI package README and license, retaining the existing Hyperf and Hypervel attribution.
  • Make release preparation match the typed version constant, pass the version through an environment variable, and fail before tagging if replacement did not occur. Repeating an already-applied version remains valid.
  • Complete Auth facade discovery for session-guard methods without incorrectly narrowing guard contracts. Restore the middleware's supported factory-or-guard return contract for concrete guard overrides.
  • Stop forgetting one backed session enum from deleting both its backing-value key and its case-name key. Wrap the enum before normalization and use array primitives without an intermediate collection.

Summary by CodeRabbit

  • New Features

    • Database errors can mask bound values to help protect sensitive data.
    • Session and cache operations support enum keys.
    • Database lock pruning can be disabled for manual control.
    • Process testing supports array commands and execution-order assertions.
    • HTTP request attributes can be attached for testing without being sent remotely.
    • Collection grouping and sorting better support enums and fractional numbers.
  • Bug Fixes

    • Public storage URLs no longer produce duplicate slashes.
    • Authentication and session cookie handling is more reliable.
  • Documentation

    • Expanded guidance for authentication, caching, databases, sessions, HTTP requests, processes, Redis, and filesystem configuration.

Restore the current upstream regression for discovering real commands whose class names end in Test while excluding PHPUnit classes in the same directory.

Exercise the real kernel through addCommandPaths and normal bootstrap. Keep all three upstream fixture roles and assertions, use the disposable Testbench application and an owned autoloader, and clean up only the created fixture directory. This avoids upstream test-helper machinery and shared autoloader mutation while retaining Hypervel command discovery and execution behavior.

Upstream: laravel/framework#58017 and laravel/framework#58147. Port source: Laravel 13.x at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2.

Validated the complete kernel test file, focused Foundation Console and Console suites, and formatting. Peer verification also covered generator interaction in both execution orders. No production behavior changes.
Correct the descriptions inherited from Laravel PR #58019: text capacities count bytes, not characters, and the listed integer widths, unsigned ranges and text limits belong to MySQL and MariaDB. PostgreSQL and SQLite compile several of these column types differently.

Preserve all upstream numeric values while qualifying the descriptions across the 22 affected methods, including incrementing columns and foreignId. The SQL generation, types and public APIs remain unchanged; no runtime checks or compatibility branches are added.

Upstream: laravel/framework#58019. Port source: Laravel 13.x at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2. Verified against the supported schema grammars and MySQL string type documentation.

Validation: formatting and diff checks pass; peer facade-docblock verification passes. Changes are prose only and do not alter analysis annotations or executable code.
Multi-attribute SORT_NUMERIC comparisons truncated both values to integers,
so different fractional prices or scores became ties and were ordered by
secondary fields or input order. Compare floats to match PHP's native
numeric sort and Collection's single-attribute path.

Keep the existing comparison loop, sort directions, key preservation and
LazyCollection delegation. Add one shared regression for both collection
classes covering positive and negative fractions, numeric strings,
secondary-key ties and both primary sort directions.

Found while reconciling Laravel's casting update; the defect originated in
its multi-attribute sort-option implementation and remains in source pin
01d008c9b5f32cb7c5e50a9a22273113d810b2a2.

Upstream:
laravel/framework#50269
laravel/framework#58037

Validation: the new regression failed with the integer comparator and passes
with the float comparator. Affected collection, support, request and file
validation tests pass, as do formatting and both PHPStan configurations.
Replace the remaining intval and floatval calls in InteractsWithData's
numeric getters and the file-size rule helper with native PHP casts.
All other supported source and test changes from the upstream PR are
already present; SQL Server remains intentionally unsupported.

Give File::toKilobytes its exact native int|float return type while keeping
the current upstream conditional return and exception annotations. Data
retrieval, size rounding, invalid-suffix errors and typed size properties
retain their existing behavior.

Port source: Laravel 13.x at
01d008c9b5f32cb7c5e50a9a22273113d810b2a2.
laravel/framework#58037

Validation: existing request conversion and file-size boundary tests pass,
along with the affected support tests, formatting and both PHPStan
configurations. No new tests duplicate the existing conversion coverage.
Mailable delivery accepts Htmlable view values through Mailer::renderView(), but renderForAssertions() cast the same text value directly to string. Implementations with toHtml() and no __toString() sent successfully and then failed both HTML and text assertions.

Use the existing Htmlable conversion when producing assertion text and describe the actual buildView() array values. Preserve the rendering cache and locale lifecycle. Add one regression using real delivery through ArrayTransport followed by HTML and text assertions.

Discovered while porting laravel/framework#60466 from Laravel 13.x at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2; current upstream shares the assertion defect. Verified the regression fails before the fix. Full source/type analysis, affected mail/locale/facade tests, and formatting pass.
Port the current generic return annotations for whenHas(), whenFilled(), whenMissing(), whenEnum(), and withLocale(), together with the complete upstream type fixture. Restore the missing ValidatedInput whenEnum regression and regenerate the Request facade annotations.

Keep existing native signatures, precise enum conversion, conditional callback behavior, and coroutine-local locale restoration unchanged. Add native typing to the ported runtime test callbacks while preserving literal return inference in the type fixture.

Laravel PRs: laravel/framework#60466 laravel/framework#60486 laravel/framework#60507 laravel/framework#60536

Port source: Laravel 13.x at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2. The new type fixture exposed the missing inference before these annotations. Full source/type analysis, affected Support/Http/mail/notification tests, facade consistency, and formatting pass.
The shared InteractsWithData implementation and Fluent retrieval tests from Laravel PR #53665 are already present. Document that Fluent input values provide the same typed retrieval methods as requests.

Correct the singular fixture-key lookups in the Fluent and Request enum-array tests. They were reading absent keys and passing without checking invalid populated values or the non-backed enum case. Preserve the existing cases and add the required void return type to the touched Fluent test.

Laravel PR: laravel/framework#53665. Source: Laravel 13.x at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2. Checked Laravel docs at 2914ba0b06c6be40c2f1f992555853f6266707d6; no matching Fluent explanation exists there. Both affected test files, the wider Support/Http checks, and formatting pass.
Port the complete current listener tests from Laravel PRs #58040 and #59309, preserving Hypervel coroutine-local query storage and the existing multibyte regression. Merge the query-cap case into its upstream test location, including exact call counts and first/last retained queries.

Correct the upstream truncation fixture: 500 placeholders never reach the 2000-byte limit. Use 1000 and assert the actual truncated length as well as the retained binding count.

Fix the adjacent applicationQueries display bug with Str::replaceArray(): repeated regex substitutions consumed backreference-like value text and replaced question marks inside earlier bindings. Preserve number/null/string formatting without adding a parser, connection access or retained state. Correct nullable connection-name/time annotations and add one real-renderer regression.

Laravel PRs: laravel/framework#58040 laravel/framework#59309. Source: 13.x at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2. Current upstream shares both the ineffective fixture and display corruption. Regression fails before the fix; affected test files, complete renderer suite, full source/type analysis and formatting pass.
Complete the public documentation for Laravel PR #58048. Explain backed values, pure case names and the precedence of custom formatting handlers, while distinguishing other objects that use __toString().

The translator implementation, three enum fixtures and all upstream replacement assertions were already present and verified. Pinned Laravel localization documentation has no matching enum explanation, so add concise guidance beside the existing replacement examples.

Laravel PR: laravel/framework#58048. Framework source: 01d008c9b5f32cb7c5e50a9a22273113d810b2a2; docs source checked: 2914ba0b06c6be40c2f1f992555853f6266707d6. Existing translation tests pass; prose verified against formatter precedence and reviewed.
Complete the public documentation for Laravel PR #58054. Explain how withAttributes distinguishes requests to one URL, and show fake response selection through Request::attributes(). Attributes remain local to the client and are also available to request assertions.

The existing source and current upstream integration cases already cover this behavior. Checked the example against those paths; the peer independently executed the documented example and verified assertion visibility. The HTTP integration tests pass. No runtime changes or additional tests.

Upstream: laravel/framework#58054
Source: laravel/framework 13.x at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2. The pinned Laravel documentation contains no corresponding HTTP attributes section.
Add minimal READMEs for reflection, conditionable and macroable so future ports can identify their Laravel source. The reflection implementation, Composer wiring and license already cover the package split from Laravel PRs #58052 and #58055.

Add the missing DI README linking to its AOP documentation and copy the existing sibling license with Hyperf and Hypervel attribution. The DI package history confirms its Hyperf origin; its README follows the current rule for independently maintained packages without an ongoing upstream reference.

Reviewed all package paths, documentation links and README conventions. Verified the DI license is identical to the pool package license. Documentation and license files only; no runtime behavior or test changes.

Upstream:
laravel/framework#58052
laravel/framework#58055
Source: laravel/framework 13.x at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2.
Track PendingRequest's async state in PHPDoc so requests created by the
factory infer Response, async requests infer PromiseInterface, and the
fluent setter updates both its result and a separately held receiver.
Port the current upstream type fixture, including QUERY coverage, and
regenerate the Http facade. Remove Saloon's now-redundant response narrowing.

Use a conservative bool template default instead of false: unannotated
subclasses and unknown-state references must retain an honest union. Record
fresh synchronous construction explicitly on Factory's two creation methods.
Keep native static return types and static<T> annotations to preserve subclass
identity. Bare facade fluent entry points retain their existing union
precision; no generator machinery or runtime transport changes are needed.

PHPStan can carry self-out state between identical factory-call expressions
even when they create different objects. Preserve the correct contracts and
explain the independent fixture scope; the limitation and reproduction are
recorded for upstream reporting. Dropping self-out would instead mis-type
held requests after async() calls.

Upstream:
laravel/framework#58090
laravel/framework#58232
laravel/framework#58684
laravel/framework#60663
Source: Laravel 13.x at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2.
QUERY source, runtime tests and public documentation were already present;
this completes its conditional return annotation and type-test coverage.

Validated with full source/type analysis, HTTP and Saloon tests, facade
generation/tag checks, formatting and diff checks.
BlogPostResource resolves to blog_posts through snake() and pluralStudly(),
not blog-posts. Correct the example inherited from Laravel's resource docs
so it matches both frameworks' resource type derivation.

Found while completing the usage-improvements port:
laravel/framework#57960
Checked Laravel docs at 2914ba0b06c6be40c2f1f992555853f6266707d6 and the
current Hypervel resolveResourceType() path. Documentation-only correction;
resource behavior is unchanged.
Complete Laravel PR #58110 using the current 13.x implementation at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2.

Collection mergeHidden() and mergeVisible() advertise string inputs but forwarded them unchanged to model methods requiring arrays. Normalize once at the collection boundary, preserving the model contracts and existing collection behavior.

Extend both upstream tests with string cases while retaining their array assertions. The new cases reproduce the TypeErrors before the fix and pass afterwards. Restore the required parent setup call.

Validated the complete collection test class, formatting and full source/type analysis.

Upstream: laravel/framework#58110
Complete Laravel PR #58115 from current 13.x at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2.

Restore the upstream tap regression through a faked factory request and its captured response value. Preserve the existing Hypervel chaining test, and restore the upstream macro result type assertion.

Add one discoverability sentence linking the HTTP response API to the existing tap documentation. The pinned Laravel docs have no HTTP-specific tap coverage; reuse the canonical helper explanation instead of duplicating it.

Validated the full HTTP client test class, formatting and full source/type analysis.

Upstream: laravel/framework#58115
Port Laravel PR #58118 with the current action revision from #60672, using 13.x at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2. Pin git-auto-commit-action v7.2.0 to the exact reviewed commit. The other upstream auto-commit workflows and Laravel Cloud comment change have no corresponding Hypervel integration.

Match the typed Application VERSION constant so version replacement actually takes effect. Pass the version through the environment instead of interpolating it into shell source, and verify the resulting literal so an unmatched replacement aborts before tagging. Repeating an already-applied version remains valid.

Set the existing release-branch guard to 0.4. Component repositories must be split to current 0.4 branches before the first release; no release or split operation is performed by this change.

Validated action defaults and clean-tree/push behavior against its pinned source, workflow YAML and shell syntax, and the version step on scratch copies for replacement, repeat invocation and a missing-pattern failure.

Upstream: laravel/framework#58118
Upstream: laravel/framework#60672
Port the meaningful QueueFailedOver constructor descriptions from Laravel PR #58123 at current 13.x revision 01d008c9b5f32cb7c5e50a9a22273113d810b2a2.

Use the native object|string union for command, matching the supported queue job inputs and the sole event construction path. Raw operations carry no job and do not dispatch this event. Preserve the command parameter name and mutable public properties.

CacheFailedOver already carries the applicable types and explanations, so it needs no change. Omit redundant exception annotations under the porting policy.

Validated the complete failover queue test class, formatting and full source/type analysis.

Upstream: laravel/framework#58123
Port Laravel PR #58152 from the current 13.x implementation at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2:
laravel/framework#58152

Accept a nullable pruning lottery and skip automatic cleanup when it is null. Retain the existing public pruner and resolver-based connection access so locks do not retain coroutine-owned pooled connections.

Include the existing empty-array opt-out in the odds metadata, beyond upstream’s two-integer tuple or null. Document the empty array for store configuration, where null still selects the default odds. Restore the upstream acquisition exception annotation.

The new null regression fails against the previous constructor; both opt-out cases verify acquisition without pruning. Existing forced-pruning and exception handling coverage remains. Focused cache and validation suites, formatting, and full source and type-fixture analysis pass.
Complete Laravel PR #58059 using the current 13.x tests at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2:
laravel/framework#58059

The dateTime builder and past, future, nowOrPast and nowOrFuture methods are already implemented and documented. Restore both missing upstream test methods and all four strict assertions in upstream order.

Adapt expected parameters to Hypervel’s standard CSV quoting while preserving all existing date-format and literal-separator coverage. The changed test file and focused suites pass, along with formatting and full static analysis.
Port Laravel framework PR #58176 from 13.x at
01d008c9b5f32cb7c5e50a9a22273113d810b2a2:
laravel/framework#58176

Reconcile its already implemented enum/countBy dependencies:
laravel/framework#56856
laravel/framework#56830

Put enum-aware keyBy and countBy callback metadata on Enumerable so
interface-typed calls share the concrete implementations' contract.
Include supported boolean counting/grouping, null grouping and Stringable
keys. Preserve the Collection return alternative for countBy implementations
such as Eloquent, without changing native signatures or runtime behavior.

Correct the upstream grouping contract: LazyCollection produces ordinary
Collection groups, while eager collections preserve their concrete class.
Keep the shared contract on Enumerable and refine eager groups locally.
Order conditional key types by array-key first so PHPStan can prove their
bounds, removing obsolete suppressions instead of adding runtime machinery.
Stringable and enum branches cannot overlap because PHP forbids enum
__toString implementations. Alias the native Stringable import to retain
the existing Hypervel Support Stringable references in the same namespace.

Port the current eager and lazy grouping, keyBy and countBy type assertions
into the existing fixture, retaining input cases and callback assertions.
Correct lazy-group expectations to match runtime and preserve more precise
literal keys. Add focused interface and normalized-key regression cases.

Validated with composer analyse, composer lint:fix, affected eager/lazy and
Eloquent collection suites, and final focused grouping/key/count tests.
Complete the current callback metadata from Laravel framework PR #58088:
laravel/framework#58088
Source: 13.x at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2.

The existing callback loop intentionally ignores non-Response returns,
including the string and void callbacks in the upstream regression tests.
The inherited Response|null annotation incorrectly rejected these supported
callbacks. Describe their result as mixed and type the callback collection
consistently, preserving nullable Request for caller-supplied Guzzle clients
that bypass middleware capture.

Extend the existing type fixture to check inferred callback arguments,
string/void returns, response replacement and the synchronous fluent result.
Explain that both fixture blocks need isolation from PHPStan's retained
async self-out state. Runtime behavior, callback ownership and native
signatures are unchanged; existing runtime tests already cover the cases.

Verified full source/type analysis, formatting, immediate type-fixture
checks and affected HTTP, mail, queue and relationship tests. Peer review
independently confirmed the contract and fixture isolation.
Complete the public documentation for Laravel framework PR #58164:
laravel/framework#58164
Source: 13.x at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2.
Docs checked at 2914ba0b06c6be40c2f1f992555853f6266707d6.

The implementation and attachment regression already support false for
either withTimestamps argument, but both frameworks' documentation still
requires both timestamp columns unconditionally. Replace that warning
with the default requirement, column-name arguments and a disabled-column
example.

Explain the custom-pivot requirement to override timestamp-column methods
for renamed or disabled columns: AsPivot delegates to the parent model,
so setting the custom pivot's constants alone does not reliably configure
these values. Keep the guidance focused on public usage.

Verified the current upstream source and fixture, the existing SQLite
attachment test, and the relationship/mailable paths during peer review.
No source behavior or new application compatibility difference.
Complete Laravel framework PR #58187 from current 13.x:
laravel/framework#58187
Source revision: 01d008c9b5f32cb7c5e50a9a22273113d810b2a2.

Mailer::render only consumes the HTML/plain entries of parseView's tuple,
and Job::failed invokes the conventional failed hook regardless of the
parsed execution method. Remove those two unused assignments. Preserve
Mailer::send's raw entry and Job::fire's method because both are used.

The other three changed upstream files already contain the cleanup.
No behavioral changes or additional tests: existing mail rendering and
queue failure coverage passes, with formatting and full source/type
analysis. The complete five-file upstream diff was reconciled.
Complete the current test expectations for Laravel framework PR #58191:
laravel/framework#58191
Source: 13.x at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2.

All three relation matchers already reject null parent keys, and the
has-one/has-many regression assertions are present. Port current upstream
single-invocation expectations for relation construction, constraints and
related collection creation. Remove unused timestamp-column mocks and the
unused newCollection stub from Hypervel's null-foreign-key test.

Keep every behavioral assertion, the extra null-foreign-key case and the
string-key model fixture. Add native callback types and helper descriptions
without changing the supported relationship behavior.

Verified the changed file immediately, affected parallel suites, formatting
and full source/type analysis. Peer review confirmed every required call
and that removed mocks are not used on these paths.
Complete the public documentation for Laravel PR #58204. Show the multi-guard using() constructor beside guest redirection and its equivalent guest:admin,web alias. The source implementation and all three upstream guard-count assertions are already present, including Hypervel request-local guard selection.

Upstream: laravel/framework#58204
Source reference: 01d008c9b5f32cb7c5e50a9a22273113d810b2a2 (13.x).
The pinned Laravel authentication documentation has no constructor example, so this adds a concise example at the existing public surface.

Validation: existing middleware source and upstream assertions reconciled; full static analysis and formatting pass. Independently reviewed with the filesystem URL batch.
Port Laravel PR #58210 from current 13.x. Strip trailing slashes from APP_URL before appending /storage so a configured application subpath does not produce URLs containing //storage. Normalize the shipped configuration rather than changing explicit filesystem URL handling or adding work to each generated URL.

Cast the environment value to string before rtrim so an absent APP_URL still produces /storage under strict types. Update the matching documentation example, which remains stale in the pinned Laravel docs. Exercise the real public disk adapter using shipped config for an ordinary host, a trailing-slash subpath, and an absent environment value.

Upstream: laravel/framework#58210
Source reference: 01d008c9b5f32cb7c5e50a9a22273113d810b2a2 (13.x).

Validation: the subpath regression fails before the fix and passes afterwards. FoundationConfigTest, the filesystem suite, full static analysis and formatting pass. Self-reviewed and independently reviewed.
Complete the remaining Laravel #58107 surface against framework 13.x at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2. Regenerate the Auth facade from AuthManager and SessionGuard so hashPasswordForCookie, logoutOtherDevices and the remaining session guard methods are discoverable. Preserve guard-contract impurity through mixins, including HTTP basic authentication, with type fixtures guarding against incorrect narrowing.

Retain the owner-approved HMAC-only requirement for custom guards used with auth.session. Document the required method and SessionGuard extension path, and record the deliberate omission of the raw-hash and missing-method fallbacks introduced by #58385 and #58389. No runtime fallback or compatibility branch is added.

Restore the protected middleware guard return contract to AuthFactory|Guard so concrete guard overrides remain possible. Port current upstream session middleware assertions and precise remember-cookie mock counts while preserving Hypervel-specific rejection coverage. Add a regression for the concrete guard override.

Validated with full formatting and source/type analysis, Auth facade generation checks, changed test classes, and the Auth, Session, Sanctum and FacadeDocumenter suites.

Upstream: laravel/framework#58107
Related exclusions: laravel/framework#58385 laravel/framework#58389
Reconcile Laravel #19843, #25167, #25301 and #42316 against framework 13.x at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2. The remaining Recaller decoding branch supports cookies from the Laravel 5.5/5.6 serialization transition. Current cookie middleware handles encryption serialization symmetrically before Recaller receives the plain value, and Hypervel has no legacy cookies to migrate.

With owner approval, assign the constructor string directly and remove the serialized-input compatibility test. Preserve the upstream protected recaller property, all current method signatures and Hypervel cached segment parsing. Extend the existing segment test to cover valid custom fourth segments; retain third-segment-only hash behavior and all other existing assertions.

Record the omitted compatibility behavior at its source insertion point. No new format checks, fallback branches or public documentation are needed for this internal legacy path. Normal authentication, custom segments and coroutine-local guard state are unchanged.

Validated with the changed Recaller tests, Auth/Cookie/Session suites, full source and type analysis, formatting and final diff checks.

Upstream history:
laravel/framework#19843
laravel/framework#25167
laravel/framework#25301
laravel/framework#42316
…erage

Port Laravel framework #61326 from 13.x at
01d008c9b5f32cb7c5e50a9a22273113d810b2a2. Connections can opt into
mask_bindings_in_exception_messages, leaving placeholders in the SQL
appended to QueryException messages. Original database errors, bindings,
raw SQL accessors and query events retain their existing behavior.

Expose DB_MASK_BINDINGS on all five supported SQL connection records,
including the separate PostgreSQL pooler endpoint. Normalize the optional
boolean once in Connection construction rather than repeating upstream's
consumer cast in runQueryCallback. This also covers direct PdoConnection
construction and raw configuration values; factory-only normalization
would miss that supported path. Refresh already copies the normalized
configuration from its fresh connection, without another state field.

Retain every upstream masking assertion and extend execution coverage for
explicit null and raw string configuration. Keep PDO execution tests on
PdoConnection while shared exception construction remains driver-neutral.
Document the opt-in setting and its limits, including getRawSql retaining
bindings. Connection details from #58218 and #58331 are already covered.

Complete #58156's missing nested-listener cases for explicitly selected
read and write connections. Preserve each upstream event and query-log
assertion and Hypervel's isolated SQLite fixtures. Update the README test
badge URL to the current workflow endpoint from #58222.

Validation: changed test classes, Database unit suite through ParaTest,
scheduling and foundation configuration tests, formatting, full source
and type-fixture PHPStan, and diff checks all pass.

laravel/framework#61326
laravel/framework#58156
laravel/framework#58222
laravel/framework#58218
laravel/framework#58331
Complete the session enum-key port from Laravel framework PR #58241,
including the already-covered additional methods and tests in #58343 and
#58459, against 13.x at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2.

A single backed enum was cast to an array before forget(), exposing both
its case name and backing value as deletion targets. Wrap the enum as one
key before normalization so unrelated case-name entries survive. Use the
existing array primitives instead of allocating a collection, and preserve
Hypervel's coroutine-local attribute access. Pinned Laravel shares this bug.

Allow enum keys through the global session() helper, matching the store
and Laravel's forwarding behavior. Correct its conditional return metadata
without adding runtime normalization or changing string/array/null paths.

Extend the existing upstream deletion test with the colliding key and add
a helper regression using existing enum fixtures. Remove the false test
comment claiming PHP permits enums as array keys. Document enum session
keys and the helper with a short public example; pinned Laravel docs have
no corresponding enum-key section.

Both regressions fail before their fixes and pass afterward. Session tests,
foundation helper tests, Blade session coverage, full source/type analysis,
formatting and diff checks pass. Existing upstream assertions are retained.

laravel/framework#58241
laravel/framework#58343
laravel/framework#58459
Complete the current Laravel model-inspection metadata, collection-operation changes, enum unions and process assertion APIs. Ordered assertions check the recording count before individual commands; array commands retain strict comparison against the original invocation. Port the current ordered, array and falsy-command regressions and the matching process documentation.

Preserve Hypervel’s native reserved-name array with array_any, use short-circuit collection predicates without intermediate filtered collections, and retain pooled/runtime adaptations in model inspection, logging and SES v2. BackedEnum remains accepted through UnitEnum. ModelInfo uses native property types and a class-owned model template shared with its array representation, correcting upstream’s collection arity and constructor/return metadata mismatch without runtime workarounds.

Upstream: laravel/framework#58230 laravel/framework#60745 laravel/framework#53563 laravel/framework#58818 laravel/framework#61193 laravel/framework#61197 laravel/framework#60947

Ported from Laravel framework 13.x at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2 and docs at 2914ba0b06c6be40c2f1f992555853f6266707d6. Verified ModelInspector on SQLite, ProcessTest, affected parallel tests, generated facade consistency, formatting and full source/type analysis. Peer review independently verified the full affected package suites.
Document enum cache keys and both Redis command listeners, including boot-time registration and propagation of command failures. The cache source and complete upstream enum-key test already exist; add the missing public usage guidance without duplicating coverage.

Restore the upstream exception expectation in RedisEventsTest so dispatching CommandFailed without rethrowing cannot pass. Require exactly one native command invocation in the throwing mock branch while preserving unused mocks for listener-registration tests.

Laravel PRs: laravel/framework#58246 and laravel/framework#58251
Port source: laravel/framework 13.x at 01d008c9b5f32cb7c5e50a9a22273113d810b2a2. The pinned Laravel documentation does not cover these APIs, so the examples are written for Hypervel.

Verified the Redis event tests, focused cache enum and repository tests through ParaTest with in-memory SQLite, formatting, and the complete diff. No runtime source or API changes.
Bring the connection and object pool redesign, consumer migrations, and
subsequent cleanup and reconnection fixes into the Laravel parity branch.
The automatic merge preserves the parity changes alongside the updated
pool configuration and test fixtures without manual conflict resolution.

Refresh local Composer metadata and autoloading without changing dependency
versions. PHP-CS-Fixer and source/type-fixture PHPStan checks pass. Runtime
tests are delegated to the backup PR's CI, as requested.
@coderabbitai

coderabbitai Bot commented Sep 9, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 87c2e326-60ad-47b9-8fc7-801afb33ddf9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@binaryfire
binaryfire merged commit b3ba43e into 0.4 Sep 9, 2026
38 checks passed
@binaryfire
binaryfire deleted the laravel-parity-58009 branch September 9, 2026 15:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant