fix(webui): load component scripts in order (script.async=false)
system-loader's loadScript appended scripts without async=false, so a component's scripts[] executed in download-finish order, not array order. That's a latent nondeterminism today (duplicate-method 'last wins' depended on it) and a hard blocker for splitting a class across files (a base file must run before prototype-augment files). Forcing async=false makes the boot loader honour array order, matching the kernel's ctx.loadScripts. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: librelad <librelad@digitalangels.vip>
This commit is contained in:
parent
0ae6aea5f4
commit
0fb24435fc
@ -1317,6 +1317,12 @@ class SystemLoader {
|
|||||||
// console.log(`📦 Loading script: ${src}`);
|
// console.log(`📦 Loading script: ${src}`);
|
||||||
const script = document.createElement('script');
|
const script = document.createElement('script');
|
||||||
script.src = src;
|
script.src = src;
|
||||||
|
// Dynamically-inserted scripts default to async=true and run in whatever
|
||||||
|
// order they finish downloading. Force async=false so a component's
|
||||||
|
// scripts[] execute in array/insertion order — required when a class is
|
||||||
|
// split across files (a base file must run before files that augment its
|
||||||
|
// prototype). Mirrors the ordered kernel ctx.loadScripts() path.
|
||||||
|
script.async = false;
|
||||||
script.onload = () => {
|
script.onload = () => {
|
||||||
// console.log(`✅ Script loaded: ${src}`);
|
// console.log(`✅ Script loaded: ${src}`);
|
||||||
resolve();
|
resolve();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user