Skip to content

[6.x] Grab bag refactors & fixes - #19448

Open
riasvdv wants to merge 16 commits into
6.xfrom
feature/grab-bag-refactors
Open

[6.x] Grab bag refactors & fixes#19448
riasvdv wants to merge 16 commits into
6.xfrom
feature/grab-bag-refactors

Conversation

@riasvdv

@riasvdv riasvdv commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Description

A collection of refactors / fixes from both manual reviews/spelunking and a Codex review, bundled into one not-too-large PR. Click on each commit to review the individual changes.

Use Laravel database teardown API

Delegates schema teardown to Laravel’s cross-driver API, removing redundant driver-specific table enumeration and drop logic.

Fix Edition capability checks

Makes each Edition report capabilities from its own value, rather than potentially returning results based on the globally configured edition.

Fix mixed element collection eager loading

Passes only class-compatible elements to eager loading, preventing mixed collections from sending incompatible elements to a type-specific loader.

Fix duplicate validation lifecycle

Runs throwing validation through one lifecycle, preventing validation hooks and their side effects from executing twice.

Use atomic job progress upserts

Replaces separate job-progress lookup, insert, and update paths with one atomic upsert, removing duplicated assignments and a concurrent-write race window.

Use exception-based JSON decoding

Uses native exception-based JSON decoding as the single parsing path, avoiding a second check against global parser error state.

Normalize forced-disabled plugin configuration

Normalizes supported forced-disabled plugin formats at the boundary so all lifecycle checks use consistent membership semantics.

Add request-scoped response headers

Moves response-header accumulation and core producers to request-scoped state, preventing headers from leaking between requests under long-lived or concurrent workers.

Improve FormResolver membership checks

Indexes control paths and node IDs once per resolution, avoiding repeated scans while preserving form output order.

Keep custom field query criteria sparse

Stores only explicitly supplied custom-field criteria, preserving the distinction between absent and explicit-null values and avoiding unnecessary query state.

Prevent stale user permission trees

Derives permission trees from current permissions and plugin contributions instead of retaining mutable cached state that can become stale.

Use GraphQL AST value decoders

Replaces duplicate handwritten AST conversion with the installed GraphQL library’s decoder while retaining Craft-specific query-condition validation.

Return verified passkey credentials explicitly

Returns verified credential data directly to persistence instead of transporting it through hidden session state, keeping independent authentication attempts isolated.

Replay structured HTML stack resources

Retains structured resource entries in the HTML stack so cache collection can replay them directly instead of rendering tags and parsing them back into data.

Keep search state local

Keeps parsed terms, groups, and query-building state local to each search, preventing nested or concurrent operations from overwriting shared service state.

Keep table validation errors beside values

Carries Table column validation errors in a row-and-cell sidecar map so persisted handles remain scalar through failed validation and rerendering.

@riasvdv riasvdv changed the title [6.x] Grab bag refactors [6.x] Grab bag refactors & fixes Aug 17, 2026
@github-actions

github-actions Bot commented Aug 17, 2026

Copy link
Copy Markdown

📚 Storybook previews

@craftcms/uiopen Storybook

No changed components detected in this Storybook.

resources/jsopen Storybook

No changed components detected in this Storybook.

@riasvdv
riasvdv force-pushed the feature/grab-bag-refactors branch from 6a93fa9 to c8759b7 Compare August 17, 2026 18:45
@riasvdv
riasvdv force-pushed the feature/grab-bag-refactors branch from c8759b7 to d196bd0 Compare August 17, 2026 18:50
@riasvdv
riasvdv requested a review from brandonkelly August 17, 2026 19:02
@riasvdv
riasvdv marked this pull request as ready for review August 17, 2026 19:02
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