ScriptCat is an extension for Chrome/Extension like violentmonkey.
Anyway, this bug is not related to the Userscript management so just go to the point directly.
You can download the extension here. I have also reported the issue to ScriptCat so the issue might be gone in the future versions.
https://github.com/scriptscat/scriptcat/releases/download/v0.18.1/scriptcat-v0.18.1-chrome.zip
However, this should be the bug in Orion side since it is different with Chromium.
In its coding,
it called
chrome.i18n.getAcceptLanguages((lngs) => {
systemConfig.getLanguage(lngs).then((lng) => {
i18n.changeLanguage(lng);
dayjs.locale(lng.toLocaleLowerCase());
if (lng !== "zh-CN") {
localePath = "en";
}
});
});
and then systemConfig get initialized.

Of course we know that the initialization of the variable should put before chrome.i18n.getAcceptLanguages so that no error would occur, but the current coding can be executed correctly in Chromium not Orion.
The problem would be, chrome.i18n.getAcceptLanguages is too fast to execute the callback function. This makes the difference between Orion and Chromium.
I guess chrome.i18n.getAcceptLanguages should call the callback in the next microTask or marcoTask to match the same behavior of Chromium.
When this bug is fixed, ScriptCat 0.18.1 can show the popup page correctly. (although there are still other bugs or issues to be found out) [ tested by adding time delay like setTimeout ]
variable initialized first, then the callback of chrome.i18n.getAcceptLanguages executed, and the popup page ( also option page) will display correctly.
Version 0.99.134-beta (WebKit 622.1.9.19.2)
Sonoma (14)
P.S. Please also review the callback timing behavior of other Chromium APIs please.
/* adding a window.postMessage might be needed in order to verify the chromium API is microTask or macroTask */
chrome.xxxxxxxxxxxxxxxxxxxx(()=>console.log('this should be later'));
console.log('this should be earlier');
You shall conduct such testing to both Orion and Chromium to make sure both APIs behavior the same.