Fixes for march 19th 2026 beta (#890)

This commit is contained in:
AAGaming
2026-03-20 22:08:44 -04:00
committed by GitHub
parent 8b8a1cc4d8
commit 4c0df04c40
4 changed files with 31 additions and 16 deletions
+1 -1
View File
@@ -47,7 +47,7 @@
} }
}, },
"dependencies": { "dependencies": {
"@decky/ui": "^4.11.1", "@decky/ui": "^4.11.2",
"compare-versions": "^6.1.1", "compare-versions": "^6.1.1",
"filesize": "^10.1.2", "filesize": "^10.1.2",
"i18next": "^25.6.0", "i18next": "^25.6.0",
+5 -5
View File
@@ -9,8 +9,8 @@ importers:
.: .:
dependencies: dependencies:
'@decky/ui': '@decky/ui':
specifier: ^4.11.1 specifier: ^4.11.2
version: 4.11.1 version: 4.11.2
compare-versions: compare-versions:
specifier: ^6.1.1 specifier: ^6.1.1
version: 6.1.1 version: 6.1.1
@@ -222,8 +222,8 @@ packages:
'@decky/api@1.1.3': '@decky/api@1.1.3':
resolution: {integrity: sha512-XsPCZxfxk5I1UtylIUN3qaWQI31siQbKfbLIskkI5innEatY1m4NQqBv/6hwPaO9mKMbdqYpnh5PSJDeMEOOBA==} resolution: {integrity: sha512-XsPCZxfxk5I1UtylIUN3qaWQI31siQbKfbLIskkI5innEatY1m4NQqBv/6hwPaO9mKMbdqYpnh5PSJDeMEOOBA==}
'@decky/ui@4.11.1': '@decky/ui@4.11.2':
resolution: {integrity: sha512-+x+rJB0MBQSQGp0UpsRJ4BOv7zlHzcBPT76enopjGf56H41beR8VZua9F4upLtDgPku4Zh8z3uB53nFlvTilXQ==} resolution: {integrity: sha512-IHwgy37DZLdRK8XUHF1Eoss/sTCcW/g/fmE4Wd3EKyQjJAbM5385wMUxzZqcE5MNC6TsdAKTa941m0n5flSOxw==}
'@esbuild/aix-ppc64@0.20.2': '@esbuild/aix-ppc64@0.20.2':
resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==}
@@ -2311,7 +2311,7 @@ snapshots:
'@decky/api@1.1.3': {} '@decky/api@1.1.3': {}
'@decky/ui@4.11.1': {} '@decky/ui@4.11.2': {}
'@esbuild/aix-ppc64@0.20.2': '@esbuild/aix-ppc64@0.20.2':
optional: true optional: true
+6 -4
View File
@@ -22,11 +22,13 @@
DFLWebpack.findModule((m) => m.createPortal && m.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE); DFLWebpack.findModule((m) => m.createPortal && m.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE);
console.debug('[Decky:Boot] Setting up JSX internals...'); console.debug('[Decky:Boot] Setting up JSX internals...');
const jsx = DFLWebpack.findModule((m) => m.jsx && Object.keys(m).length == 1)?.jsx; const jsxModule = DFLWebpack.findModule((m) => (m.jsx && m.jsxs) || (m.jsx && Object.keys(m).length == 1));
if (jsx) { if (jsxModule.jsxs) {
window.SP_JSX = jsxModule;
} else {
window.SP_JSX = { window.SP_JSX = {
jsx, jsx: jsxModule.jsx,
jsxs: jsx, jsxs: jsxModule.jsx,
Fragment: window.SP_REACT.Fragment, Fragment: window.SP_REACT.Fragment,
}; };
} }
+19 -6
View File
@@ -29,7 +29,8 @@ interface Tab {
class TabsHook extends Logger { class TabsHook extends Logger {
// private keys = 7; // private keys = 7;
tabs: Tab[] = []; tabs: Tab[] = [];
private qamPatch?: Patch; private qamBrowserViewPatch?: Patch;
private qamEmbeddedPatch?: Patch;
constructor() { constructor() {
super('TabsHook'); super('TabsHook');
@@ -40,11 +41,13 @@ class TabsHook extends Logger {
} }
init() { init() {
// TODO patch the "embedded" renderer in this module too (seems to be for VR? unsure)
const qamModule = findModuleByExport((e) => e?.type?.toString?.()?.includes('QuickAccessMenuBrowserView')); const qamModule = findModuleByExport((e) => e?.type?.toString?.()?.includes('QuickAccessMenuBrowserView'));
const qamRenderer = Object.values(qamModule).find((e: any) => const qamBrowserViewRenderer = Object.values(qamModule).find((e: any) =>
e?.type?.toString?.()?.includes('QuickAccessMenuBrowserView'), e?.type?.toString?.()?.includes('QuickAccessMenuBrowserView'),
); );
const qamEmbeddedRenderer = Object.values(qamModule).find((e: any) =>
e?.type?.toString?.()?.includes('QuickAccessMenuEmbedded'),
);
const patchHandler = createReactTreePatcher( const patchHandler = createReactTreePatcher(
[(tree) => findInReactTree(tree, (node) => node?.props?.onFocusNavDeactivated)], [(tree) => findInReactTree(tree, (node) => node?.props?.onFocusNavDeactivated)],
@@ -56,12 +59,21 @@ class TabsHook extends Logger {
'TabsHook', 'TabsHook',
); );
this.qamPatch = afterPatch(qamRenderer, 'type', patchHandler); this.qamBrowserViewPatch = afterPatch(qamBrowserViewRenderer, 'type', patchHandler);
if (qamEmbeddedRenderer) this.qamEmbeddedPatch = afterPatch(qamEmbeddedRenderer, 'type', patchHandler);
// Patch already rendered qam // Patch already rendered qam
const root = getReactRoot(document.getElementById('root') as any); const root = getReactRoot(document.getElementById('root') as any);
const qamNode = root && findInReactTree(root, (n: any) => n.elementType == qamRenderer); // need elementType, because type is actually mobx wrapper const qamNode =
root &&
findInReactTree(
root,
(n: any) =>
n.elementType == qamBrowserViewRenderer ||
(qamEmbeddedRenderer != null && n.elementType == qamEmbeddedRenderer),
); // need elementType, because type is actually mobx wrapper
if (qamNode) { if (qamNode) {
console.log('patching existing qam');
// Only affects this fiber node so we don't need to unpatch here // Only affects this fiber node so we don't need to unpatch here
qamNode.type = qamNode.elementType.type; qamNode.type = qamNode.elementType.type;
if (qamNode?.alternate) { if (qamNode?.alternate) {
@@ -71,7 +83,8 @@ class TabsHook extends Logger {
} }
deinit() { deinit() {
this.qamPatch?.unpatch(); this.qamBrowserViewPatch?.unpatch();
this.qamEmbeddedPatch?.unpatch();
} }
add(tab: Tab) { add(tab: Tab) {