Issue summary
### Problem/Motivation
`js/runtime/dropup-loader.js` picks the first widget the config endpoint returns:
// One widget at a time. Priority and conflict resolution land in M2;
// until then the newest live widget wins, deterministically.
if (widgets.length) {
mount(widgets[0]);
}
"the newest live widget wins" describes behaviour that no longer exists.
`ConfigController::widgets()` sorts by `weight` then `id`, and its own comment
says so explicitly: "Weight order, not most-recently-changed (decision D34): the
old rule meant editing an unrelated widget silently took over the slot."
So the comment documents the exact bug that ordering change was made to fix. A
maintainer reading only the loader would conclude that saving any live widget can
steal the slot from another, and could "fix" a problem that was already fixed —
or reintroduce it.
### Steps to reproduce
Read `js/runtime/dropup-loader.js` line 33 against
`src/Controller/ConfigController.php` lines 55–62.
### Proposed resolution
Restate what the loader actually relies on: the endpoint's order, which is
lowest weight first with the id as a stable tie-break.
### Remaining tasks
Patch and review. No behaviour change — comment only.
### User interface changes
None.
### API changes
None.
### Data model changes
None.
Issue fork dropup-3622957
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #2
ibrahim tameme commentedComment #4
ibrahim tameme commentedComment #6
ibrahim tameme commented