mirror of
https://github.com/saphid/frame-control.git
synced 2026-10-27 07:01:51 +01:00
13576 lines
422 KiB
JSON
13576 lines
422 KiB
JSON
{
|
|
"schemaVersion": 1,
|
|
"checkedAtUtc": "2026-10-26T06:10:58.537029+00:00",
|
|
"source": "https://plugins.deckbrew.xyz/plugins",
|
|
"hostCommit": "779f9c5",
|
|
"method": "Exact SHA-256 verified archives. All frontends attempted in opaque-iframe Chromium for 1.2 s with backend calls and network denied; ready means initializer only. Backend calls were denied in the baseline browser audit. Scoped live backend follow-ups are recorded separately in docs/framey-compatibility.md.",
|
|
"plugins": [
|
|
{
|
|
"id": 1,
|
|
"name": "XR Gaming",
|
|
"version": "1.6.2",
|
|
"sha256": "b73c6b697b4f588b789d1d77be27e46512d4aa133df43128bbeafc48b1905892",
|
|
"tags": [
|
|
"ar",
|
|
"rayneo",
|
|
"rokid",
|
|
"root",
|
|
"tcl",
|
|
"viture",
|
|
"vr",
|
|
"xr",
|
|
"xreal"
|
|
],
|
|
"folder": "decky-XRGaming",
|
|
"archiveBytes": 5552163,
|
|
"api": 1,
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-XRGaming/main.py",
|
|
"decky-XRGaming/PyXRLinuxDriverIPC/__init__.py",
|
|
"decky-XRGaming/PyXRLinuxDriverIPC/xrdriveripc.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogButton",
|
|
"DialogButtonPrimary",
|
|
"DialogButtonSecondary",
|
|
"DropdownItem",
|
|
"Field",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"SliderField",
|
|
"Spinner",
|
|
"TextField",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"gamepadDialogClasses",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"systemctl"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/Electronicks/JoyShockMapper",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/wheaney/XRLinuxDriver",
|
|
"https://github.com/wheaney/breezy-desktop",
|
|
"https://github.com/wheaney/decky-XRGaming",
|
|
"https://github.com/wheaney/decky-XRGaming.git"
|
|
],
|
|
"status": "na",
|
|
"reason": "Not supported on Frame: Requires supported external XR glasses and the Breezy/XRLinuxDriver stack; it does not target Steam Frame displays.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 1,
|
|
"name": "XR Gaming",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"retrieve_config",
|
|
"is_breezy_install_pending",
|
|
"retrieve_driver_state",
|
|
"retrieve_dont_show_again_keys"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 1,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "Requires supported external XR glasses and the Breezy/XRLinuxDriver stack; it does not target Steam Frame displays.",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 1,
|
|
"sha256": "b73c6b697b4f588b789d1d77be27e46512d4aa133df43128bbeafc48b1905892",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 7,
|
|
"name": "CSS Loader",
|
|
"version": "2.1.3",
|
|
"sha256": "99beaf1374af82408e6d056e0b0147e5fca544e1035fa7ab88419231697bc231",
|
|
"tags": [
|
|
"style"
|
|
],
|
|
"folder": "SDH-CssLoader",
|
|
"archiveBytes": 186133,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"SDH-CssLoader/main.py",
|
|
"SDH-CssLoader/css_browserhook.py",
|
|
"SDH-CssLoader/css_inject.py",
|
|
"SDH-CssLoader/css_loader.py",
|
|
"SDH-CssLoader/css_remoteinstall.py",
|
|
"SDH-CssLoader/css_server.py",
|
|
"SDH-CssLoader/css_sfp_compat.py",
|
|
"SDH-CssLoader/css_theme.py",
|
|
"SDH-CssLoader/css_themepatch.py",
|
|
"SDH-CssLoader/css_themepatchcomponent.py",
|
|
"SDH-CssLoader/css_utils.py",
|
|
"SDH-CssLoader/css_win_tray.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ColorPickerModal",
|
|
"ConfirmModal",
|
|
"DialogButton",
|
|
"DialogCheckbox",
|
|
"Dropdown",
|
|
"DropdownItem",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ScrollPanelGroup",
|
|
"SidebarNavigation",
|
|
"SliderField",
|
|
"Tabs",
|
|
"TextField",
|
|
"Toggle",
|
|
"ToggleField",
|
|
"classMap",
|
|
"definePlugin",
|
|
"findModuleChild",
|
|
"gamepadDialogClasses",
|
|
"gamepadSliderClasses",
|
|
"getGamepadNavigationTrees",
|
|
"replacePatch",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-plugin-template",
|
|
"https://github.com/suchmememanyskill/SDH-CssLoader",
|
|
"https://github.com/suchmememanyskill/SDH-CssLoader.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Panel initialization succeeds; CSS themes patch Steam UI and cannot theme the isolated VR shell.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 7,
|
|
"name": "CSS Loader",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "warn",
|
|
"message": "Resolve failed: [object Object] promise [object Promise]"
|
|
},
|
|
{
|
|
"kind": "warn",
|
|
"message": "Resolve failed: [object Object] promise [object Promise]"
|
|
},
|
|
{
|
|
"kind": "warn",
|
|
"message": "Resolve failed: [object Object] promise [object Promise]"
|
|
},
|
|
{
|
|
"kind": "warn",
|
|
"message": "Resolve failed: [object Object] promise [object Promise]"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_themes",
|
|
"store_read",
|
|
"dummy_function",
|
|
"get_last_load_errors"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 7,
|
|
"accepted": true,
|
|
"folder": "SDH-CssLoader"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 7,
|
|
"sha256": "99beaf1374af82408e6d056e0b0147e5fca544e1035fa7ab88419231697bc231",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 10,
|
|
"name": "vibrantDeck",
|
|
"version": "2.0.1",
|
|
"sha256": "272f6f3cd66c5d5c9b50ff46463ad509c8afc014633febd22046ff1aee52ee0f",
|
|
"tags": [
|
|
"saturation",
|
|
"vibrant"
|
|
],
|
|
"folder": "vibrantDeck",
|
|
"archiveBytes": 21813,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"vibrantDeck/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SliderField",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/libvibrant/vibrantDeck",
|
|
"https://github.com/libvibrant/vibrantDeck.git"
|
|
],
|
|
"status": "na",
|
|
"reason": "Not supported on Frame: Changes X11 gamescope color properties, not the Frame SteamVR compositor.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 10,
|
|
"name": "vibrantDeck",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"set_vibrancy"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 10,
|
|
"accepted": true,
|
|
"folder": "vibrantDeck"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "Changes X11 gamescope color properties, not the Frame SteamVR compositor.",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 10,
|
|
"sha256": "272f6f3cd66c5d5c9b50ff46463ad509c8afc014633febd22046ff1aee52ee0f",
|
|
"archiveValidation": "accepted",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Not supported on Frame: Changes X11 gamescope color properties, not the Frame SteamVR compositor."
|
|
}
|
|
},
|
|
{
|
|
"id": 11,
|
|
"name": "Fantastic",
|
|
"version": "0.5.1",
|
|
"sha256": "a70f291d2ba681fb6757c0c7e139d3fadd9a350cf3f755a9a1f668cae18b8b8a",
|
|
"tags": [
|
|
"fan-control",
|
|
"root",
|
|
"utility"
|
|
],
|
|
"folder": "Fantastic",
|
|
"archiveBytes": 1063187,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"root",
|
|
"_debug",
|
|
"global-dfl"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"Fantastic/main.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "Fantastic/bin/backend",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"Field",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/NGnius/Fantastic",
|
|
"https://github.com/NGnius/Fantastic.git",
|
|
"https://github.com/NGnius/usdpl-rs",
|
|
"https://github.com/SteamDeckHomebrew/decky-plugin-template"
|
|
],
|
|
"status": "na",
|
|
"reason": "Not supported on Frame: Targets Steam Deck fan hardware; no Frame fan-control mapping is provided.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 11,
|
|
"name": "Fantastic",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "rejection",
|
|
"message": "CompileError: WebAssembly.instantiateStreaming(): Compiling or instantiating WebAssembly module violates the following Content Security policy directive because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: \"script-src 'self' 'unsafe-inline' blob:\"."
|
|
},
|
|
{
|
|
"kind": "rejection",
|
|
"message": "TypeError: Cannot read properties of undefined (reading 'get_enable')"
|
|
},
|
|
{
|
|
"kind": "rejection",
|
|
"message": "TypeError: Cannot read properties of undefined (reading 'get_interpolate')"
|
|
},
|
|
{
|
|
"kind": "rejection",
|
|
"message": "TypeError: Cannot read properties of undefined (reading 'get_curve_x')"
|
|
},
|
|
{
|
|
"kind": "rejection",
|
|
"message": "TypeError: Cannot read properties of undefined (reading 'get_temperature')"
|
|
},
|
|
{
|
|
"kind": "rejection",
|
|
"message": "TypeError: Cannot read properties of undefined (reading 'get_fan_rpm')"
|
|
}
|
|
],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 11,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: Fantastic/bin/backend"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "Targets Steam Deck fan hardware; no Frame fan-control mapping is provided.",
|
|
"nativePort": "Fan backend/driver is Deck-specific; an ARM64 rebuild would not provide compatible Frame hardware.",
|
|
"uiSurfaces": [
|
|
"QAM/global tabs"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 11,
|
|
"sha256": "a70f291d2ba681fb6757c0c7e139d3fadd9a350cf3f755a9a1f668cae18b8b8a",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: Fantastic/bin/backend",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 12,
|
|
"name": "MusicControl",
|
|
"version": "1.1.6",
|
|
"sha256": "246b89fd653c60a735b1cc401d1b0937d5cb969eea9024561661ff741f081d62",
|
|
"tags": [
|
|
"media",
|
|
"mpris",
|
|
"music"
|
|
],
|
|
"folder": "MusicControl",
|
|
"archiveBytes": 15751,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"MusicControl/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogButton",
|
|
"Focusable",
|
|
"Menu",
|
|
"MenuItem",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SidebarNavigation",
|
|
"SliderField",
|
|
"SteamSpinner",
|
|
"definePlugin",
|
|
"showContextMenu",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/mirobouma/MusicControl",
|
|
"https://github.com/mirobouma/MusicControl.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Legacy media controls initialize; player discovery and playback are unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 12,
|
|
"name": "MusicControl",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "warn",
|
|
"message": "Resolve failed: [object Object] promise [object Promise]"
|
|
},
|
|
{
|
|
"kind": "warn",
|
|
"message": "Resolve failed: [object Object] promise [object Promise]"
|
|
}
|
|
],
|
|
"methods": [
|
|
"sp_list_media_players"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 12,
|
|
"accepted": true,
|
|
"folder": "MusicControl"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 12,
|
|
"sha256": "246b89fd653c60a735b1cc401d1b0937d5cb969eea9024561661ff741f081d62",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 13,
|
|
"name": "Pause Games",
|
|
"version": "1.0.3",
|
|
"sha256": "4aefdfb0ef25dea9c6d9fd037731c8b99ee8a1be966c2f7d5b0602112ef29f62",
|
|
"tags": [
|
|
"pause",
|
|
"play",
|
|
"quick-resume",
|
|
"resume",
|
|
"sigcont",
|
|
"sigstop",
|
|
"sleep",
|
|
"stop",
|
|
"suspend"
|
|
],
|
|
"folder": "SDH-PauseGames",
|
|
"archiveBytes": 699197,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"SDH-PauseGames/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Apps",
|
|
"Apps.RegisterForGameActionTaskChange",
|
|
"GameSessions.RegisterForAppLifetimeNotifications",
|
|
"System.RegisterForOnResumeFromSuspend",
|
|
"System.RegisterForOnSuspendRequest",
|
|
"System.UI.RegisterForFocusChangeEvents",
|
|
"System.UI.RegisterForSystemKeyEvents"
|
|
],
|
|
"dfl": [
|
|
"Button",
|
|
"Field",
|
|
"Focusable",
|
|
"Marquee",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"Toggle",
|
|
"ToggleField",
|
|
"beforePatch",
|
|
"sleep"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/CryoByte33/steam-deck-utilities",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/checkpoint-restore/criu",
|
|
"https://github.com/popsUlfr/SDH-PauseGames",
|
|
"https://github.com/wynn1212/SDH-PauseGames",
|
|
"https://github.com/wynn1212/SDH-PauseGames.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Settings and running-game list initialize in local Chromium with an explicit synthetic game; live Frame empty-list reads and lifetime registration/cleanup passed. Process pause/resume, automatic pausing and suspend integration remain unverified/unsupported; backend writes were denied.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 13,
|
|
"name": "Pause Games",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"load_settings"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 13,
|
|
"accepted": true,
|
|
"folder": "SDH-PauseGames"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 13,
|
|
"sha256": "4aefdfb0ef25dea9c6d9fd037731c8b99ee8a1be966c2f7d5b0602112ef29f62",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"runningFollowUp": {
|
|
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
|
|
"mode": "synthetic nonempty running/library replay; backend and network denied",
|
|
"frontendReady": true
|
|
}
|
|
},
|
|
{
|
|
"id": 14,
|
|
"name": "ProtonDB Badges",
|
|
"version": "1.3.4",
|
|
"sha256": "90a3453ac02709cad64096e7539fd8141fa56f99ae3441fc24a4990dc9684358",
|
|
"tags": [
|
|
"protondb"
|
|
],
|
|
"folder": "protondb-decky",
|
|
"archiveBytes": 1008322,
|
|
"api": 2,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"protondb-decky/main.py",
|
|
"protondb-decky/settings.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogButton",
|
|
"DropdownItem",
|
|
"Field",
|
|
"Focusable",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ScrollPanel",
|
|
"ScrollPanelGroup",
|
|
"ToggleField",
|
|
"afterPatch",
|
|
"appDetailsClasses",
|
|
"appDetailsHeaderClasses",
|
|
"createReactTreePatcher",
|
|
"definePlugin",
|
|
"findInReactTree",
|
|
"findModuleExport",
|
|
"showModal",
|
|
"staticClasses",
|
|
"useParams"
|
|
],
|
|
"globals": [
|
|
"SteamUIStore",
|
|
"appStore",
|
|
"routerHook",
|
|
"toaster"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/bschelst/protondb-decky",
|
|
"https://github.com/bschelst/protondb-decky.git",
|
|
"https://github.com/sponsors/bschelst"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Settings render locally and read-only get_setting RPC returned the default through real Decky 3.3.0 on ARM64 Frame. Steam game-page badges have no patch target; live writes and VR controls unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame",
|
|
"real Frame SSH"
|
|
],
|
|
"browser": {
|
|
"id": 14,
|
|
"name": "ProtonDB Badges",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_setting"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 14,
|
|
"accepted": true,
|
|
"folder": "protondb-decky"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 14,
|
|
"sha256": "90a3453ac02709cad64096e7539fd8141fa56f99ae3441fc24a4990dc9684358",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"realFrame": {
|
|
"id": 14,
|
|
"version": "1.3.4",
|
|
"sha256": "90a3453ac02709cad64096e7539fd8141fa56f99ae3441fc24a4990dc9684358",
|
|
"method": "get_setting",
|
|
"result": {
|
|
"result": "default"
|
|
},
|
|
"errors": [
|
|
"Transient CEF reconnect during Decky frontend injection; succeeded on retry."
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"id": 16,
|
|
"name": "Audio Loader",
|
|
"version": "1.6.1",
|
|
"sha256": "fd5a090c2e2cd4da6723d7bd08937ab31b9f8d4663510431713da531343e303f",
|
|
"tags": [
|
|
"media",
|
|
"music",
|
|
"style"
|
|
],
|
|
"folder": "SDH-AudioLoader",
|
|
"archiveBytes": 127807,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"_root"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"SDH-AudioLoader/main.py",
|
|
"SDH-AudioLoader/audio_remoteinstall.py",
|
|
"SDH-AudioLoader/audio_utils.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"GameSessions.RegisterForAppLifetimeNotifications",
|
|
"d.ts"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogButton",
|
|
"Dropdown",
|
|
"DropdownItem",
|
|
"Focusable",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SliderField",
|
|
"Tabs",
|
|
"TextField",
|
|
"ToggleField",
|
|
"afterPatch",
|
|
"beforePatch",
|
|
"definePlugin",
|
|
"findModuleChild",
|
|
"gamepadDialogClasses",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/EMERALD0874/SDH-AudioLoader",
|
|
"https://github.com/EMERALD0874/SDH-AudioLoader.git",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service. Steam UI sound lookup is present as explicitly unsupported; the frontend still requires Steam m_GamepadUIAudioStore.m_AudioPlaybackManager, which is unavailable in the isolated panel.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 16,
|
|
"name": "Audio Loader",
|
|
"ready": false,
|
|
"error": "Cannot read properties of undefined (reading 'm_AudioPlaybackManager')",
|
|
"logs": [
|
|
{
|
|
"kind": "warn",
|
|
"message": "Resolve failed: [object Object] promise [object Promise]"
|
|
}
|
|
],
|
|
"methods": [
|
|
"store_read"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 16,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 16,
|
|
"sha256": "fd5a090c2e2cd4da6723d7bd08937ab31b9f8d4663510431713da531343e303f",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service. Frontend audit failed: Cannot read properties of null (reading 'm_GamepadUIAudioStore')."
|
|
}
|
|
},
|
|
{
|
|
"id": 18,
|
|
"name": "Bluetooth",
|
|
"version": "3.1.1",
|
|
"sha256": "f07f7b74f31da15b5e3a8234a3f00faa01365b56b8f496aca7bb79120be7b8a5",
|
|
"tags": [
|
|
"bluetooth",
|
|
"utility"
|
|
],
|
|
"folder": "Bluetooth",
|
|
"archiveBytes": 1387251,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"Bluetooth/main.py",
|
|
"Bluetooth/py_modules/jeepney/wrappers.py",
|
|
"Bluetooth/py_modules/jeepney/low_level.py",
|
|
"Bluetooth/py_modules/jeepney/fds.py",
|
|
"Bluetooth/py_modules/jeepney/bus_messages.py",
|
|
"Bluetooth/py_modules/jeepney/bus.py",
|
|
"Bluetooth/py_modules/jeepney/bindgen.py",
|
|
"Bluetooth/py_modules/jeepney/auth.py",
|
|
"Bluetooth/py_modules/jeepney/__init__.py",
|
|
"Bluetooth/py_modules/jeepney/tests/test_wrappers.py",
|
|
"Bluetooth/py_modules/jeepney/tests/test_low_level.py",
|
|
"Bluetooth/py_modules/jeepney/tests/test_fds.py",
|
|
"Bluetooth/py_modules/jeepney/tests/test_bus_messages.py",
|
|
"Bluetooth/py_modules/jeepney/tests/test_bus.py",
|
|
"Bluetooth/py_modules/jeepney/tests/test_bindgen.py",
|
|
"Bluetooth/py_modules/jeepney/tests/test_auth.py",
|
|
"Bluetooth/py_modules/jeepney/tests/__init__.py",
|
|
"Bluetooth/py_modules/jeepney/io/trio.py",
|
|
"Bluetooth/py_modules/jeepney/io/threading.py",
|
|
"Bluetooth/py_modules/jeepney/io/common.py",
|
|
"Bluetooth/py_modules/jeepney/io/blocking.py",
|
|
"Bluetooth/py_modules/jeepney/io/asyncio.py",
|
|
"Bluetooth/py_modules/jeepney/io/__init__.py",
|
|
"Bluetooth/py_modules/jeepney/io/tests/utils.py",
|
|
"Bluetooth/py_modules/jeepney/io/tests/test_trio.py",
|
|
"Bluetooth/py_modules/jeepney/io/tests/test_threading.py",
|
|
"Bluetooth/py_modules/jeepney/io/tests/test_blocking.py",
|
|
"Bluetooth/py_modules/jeepney/io/tests/test_asyncio.py",
|
|
"Bluetooth/py_modules/jeepney/io/tests/conftest.py",
|
|
"Bluetooth/py_modules/jeepney/io/tests/__init__.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"DialogButton",
|
|
"Field",
|
|
"Focusable",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"staticClasses"
|
|
],
|
|
"globals": [],
|
|
"hardwareSignals": [
|
|
"/sys/class/power_supply"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/Outpox/Bluetooth",
|
|
"https://github.com/Outpox/Bluetooth.git",
|
|
"https://github.com/pytest-dev/pytest-asyncio"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Controls render with fixture replies; actual Bluetooth discovery, labels and connections remain unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 18,
|
|
"name": "Bluetooth",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "[Bluetooth] !! get_bluetooth_status \u2192 Error: All retries failed. Last error: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Error: All retries failed. Last error: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[Bluetooth] !! get_paired_devices_with_info \u2192 Error: All retries failed. Last error: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Error: All retries failed. Last error: Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_bluetooth_status",
|
|
"get_paired_devices_with_info"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 18,
|
|
"accepted": true,
|
|
"folder": "Bluetooth"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "/sys/class/power_supply",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 18,
|
|
"sha256": "f07f7b74f31da15b5e3a8234a3f00faa01365b56b8f496aca7bb79120be7b8a5",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 19,
|
|
"name": "Notebook",
|
|
"version": "0.1.5",
|
|
"sha256": "c35b09de4bba4b4157fbe84cb7b0d20fc3924f78fa3c48ae17686b4314c1cc0c",
|
|
"tags": [
|
|
"draw",
|
|
"drawings",
|
|
"notebook",
|
|
"notes",
|
|
"scribble",
|
|
"write"
|
|
],
|
|
"folder": "SDH-Notebook",
|
|
"archiveBytes": 134532,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"SDH-Notebook/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"System.UI.RegisterForFocusChangeEvents"
|
|
],
|
|
"dfl": [
|
|
"DialogButton",
|
|
"Dropdown",
|
|
"Marquee",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"definePlugin",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/popsUlfr/SDH-Notebook",
|
|
"https://github.com/popsUlfr/SDH-Notebook.git"
|
|
],
|
|
"status": "works",
|
|
"reason": "Default notebook drawing, save and reopen verified in Chromium with real Decky 3.3.0 ARM64, including backend restart. Running-game context is now supplied; per-game selection was attempted with a synthetic game and backend calls denied. Real per-game selection, background artwork and worn-VR input remain unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame",
|
|
"real Frame SSH"
|
|
],
|
|
"browser": {
|
|
"id": 19,
|
|
"name": "Notebook",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "warn",
|
|
"message": "No stroke found!"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"listPages",
|
|
"loadLastSelectedPage",
|
|
"loadPage"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 19,
|
|
"accepted": true,
|
|
"folder": "SDH-Notebook"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 19,
|
|
"sha256": "c35b09de4bba4b4157fbe84cb7b0d20fc3924f78fa3c48ae17686b4314c1cc0c",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"realFrame": {
|
|
"evidence": "docs/evidence/framey-events-backend-2026-10-26.json",
|
|
"checks": {
|
|
"pointerStrokeSaved": true,
|
|
"sameStrokeLoadedAfterBackendRestart": true,
|
|
"defaultAppId": 0,
|
|
"existingNotesTouched": false
|
|
},
|
|
"method": "local Chromium + real Frame SSH; private actual Decky 3.3.0 ARM64 service"
|
|
},
|
|
"runningFollowUp": {
|
|
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
|
|
"mode": "synthetic nonempty running/library replay; backend and network denied",
|
|
"frontendReady": true
|
|
}
|
|
},
|
|
{
|
|
"id": 21,
|
|
"name": "PowerTools",
|
|
"version": "2.0.3",
|
|
"sha256": "47614f53b8c538c4caa15f89a01e4ab106fa328e89f78545bacb3166d104d964",
|
|
"tags": [
|
|
"power-management",
|
|
"root",
|
|
"utility"
|
|
],
|
|
"folder": "PowerTools",
|
|
"archiveBytes": 4327155,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"root",
|
|
"global-dfl"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"PowerTools/main.py",
|
|
"PowerTools/translations/build.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "PowerTools/bin/libryzenadj.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "PowerTools/bin/ryzenadj",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "PowerTools/bin/backend",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [
|
|
"Apps.RegisterForGameActionEnd",
|
|
"Apps.RegisterForGameActionStart",
|
|
"GameSessions.RegisterForAppLifetimeNotifications",
|
|
"User.GetLoginUsers",
|
|
"User.RegisterForCurrentUserChanges"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogButton",
|
|
"Dropdown",
|
|
"Field",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"QuickAccessTab",
|
|
"Router",
|
|
"SliderField",
|
|
"Spinner",
|
|
"TextField",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"appStore",
|
|
"routerHook",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/NGnius/PowerTools",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader"
|
|
],
|
|
"status": "na",
|
|
"reason": "Not supported on Frame: Targets AMD Ryzen power controls; Frame uses an ARM64 SoC.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 21,
|
|
"name": "PowerTools",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "warn",
|
|
"message": "`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:"
|
|
},
|
|
{
|
|
"kind": "rejection",
|
|
"message": "CompileError: WebAssembly.instantiate(): Compiling or instantiating WebAssembly module violates the following Content Security policy directive because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: \"script-src 'self' 'unsafe-inline' blob:\"."
|
|
}
|
|
],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 21,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: PowerTools/bin/libryzenadj.so"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "Targets AMD Ryzen power controls; Frame uses an ARM64 SoC.",
|
|
"nativePort": "RyzenAdj and AMD power backend cannot control an ARM64 Frame SoC.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"QAM/global tabs",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 21,
|
|
"sha256": "47614f53b8c538c4caa15f89a01e4ab106fa328e89f78545bacb3166d104d964",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: PowerTools/bin/libryzenadj.so",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 22,
|
|
"name": "Memory Deck",
|
|
"version": "0.1.8",
|
|
"sha256": "69f4707c2a0580f64df260fbd3de205e068a825b620769038c7bdaec516c104e",
|
|
"tags": [
|
|
"cheats",
|
|
"memory",
|
|
"scanmem"
|
|
],
|
|
"folder": "memory-deck",
|
|
"archiveBytes": 241603,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"debug",
|
|
"root"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"memory-deck/main.py",
|
|
"memory-deck/scanmem.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "memory-deck/bin/libscanmem.so.1.0.0",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogButton",
|
|
"DropdownItem",
|
|
"Focusable",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SteamSpinner",
|
|
"definePlugin",
|
|
"gamepadDialogClasses",
|
|
"joinClassNames",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"gamescope"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/CameronRedmore/memory-deck",
|
|
"https://github.com/CameronRedmore/memory-deck.git",
|
|
"https://github.com/HeyItsWaters/memory-deck",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: memory-deck/bin/libscanmem.so.1.0.0.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 22,
|
|
"name": "Memory Deck",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_processes",
|
|
"get_attached_process"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 22,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: memory-deck/bin/libscanmem.so.1.0.0"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "gamescope",
|
|
"nativePort": "libscanmem must be rebuilt for aarch64 and validated against target process architecture; memory writes were not tested.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 22,
|
|
"sha256": "69f4707c2a0580f64df260fbd3de205e068a825b620769038c7bdaec516c104e",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: memory-deck/bin/libscanmem.so.1.0.0",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: memory-deck/bin/libscanmem.so.1.0.0."
|
|
}
|
|
},
|
|
{
|
|
"id": 23,
|
|
"name": "Animation Changer",
|
|
"version": "1.3.2",
|
|
"sha256": "f2c62b90ca60d8a80b6d0f75d8027552b1509c7a05842c6f4a24a9072846d133",
|
|
"tags": [
|
|
"boot-animation",
|
|
"utility"
|
|
],
|
|
"folder": "SDH-AnimationChanger",
|
|
"archiveBytes": 52224,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"SDH-AnimationChanger/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogButton",
|
|
"Dropdown",
|
|
"DropdownItem",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"Spinner",
|
|
"Tabs",
|
|
"TextField",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"findModule",
|
|
"findSP",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/TheLogicMaster/SDH-AnimationChanger",
|
|
"https://github.com/TheLogicMaster/SDH-AnimationChanger.git",
|
|
"https://github.com/suchmememanyskill/SDH-CssLoader"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; forced backend failure prevents loading animations. Boot-video changes untested.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 23,
|
|
"name": "Animation Changer",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "rejection",
|
|
"message": "TypeError: Cannot read properties of undefined (reading 'map')"
|
|
},
|
|
{
|
|
"kind": "rejection",
|
|
"message": "TypeError: Cannot read properties of undefined (reading 'map')"
|
|
}
|
|
],
|
|
"methods": [
|
|
"getState"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 23,
|
|
"accepted": true,
|
|
"folder": "SDH-AnimationChanger"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 23,
|
|
"sha256": "f2c62b90ca60d8a80b6d0f75d8027552b1509c7a05842c6f4a24a9072846d133",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 24,
|
|
"name": "RadiYo!",
|
|
"version": "1.3",
|
|
"sha256": "647111578aa7a5ecd16af8d7fe6c068a6d7ea8737c6dce5ac2d52e84a549ec43",
|
|
"tags": [
|
|
"media",
|
|
"music",
|
|
"radio"
|
|
],
|
|
"folder": "radiyo-steam-deck",
|
|
"archiveBytes": 33686,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"radiyo-steam-deck/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ConfirmModal",
|
|
"DialogButton",
|
|
"Dropdown",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"QuickAccessTab",
|
|
"Router",
|
|
"SliderField",
|
|
"Spinner",
|
|
"TextField",
|
|
"definePlugin",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/isiah-lloyd/RadiYo",
|
|
"https://github.com/isiah-lloyd/radiyo-steam-deck"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; radio discovery and playback remain unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 24,
|
|
"name": "RadiYo!",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "error while fetching http://api.dar.fm/topsongs.php?callback=json&page_size=10&q=Music&partner_token=7090975725"
|
|
}
|
|
],
|
|
"methods": [
|
|
"fetch"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 24,
|
|
"accepted": true,
|
|
"folder": "radiyo-steam-deck"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 24,
|
|
"sha256": "647111578aa7a5ecd16af8d7fe6c068a6d7ea8737c6dce5ac2d52e84a549ec43",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 26,
|
|
"name": "HLTB for Deck",
|
|
"version": "2.0.12",
|
|
"sha256": "bd54a23b0b8ec0798aa590e5be236522a593529d7680e77fb888e2971bf3d558",
|
|
"tags": [
|
|
"backlog",
|
|
"how long to beat",
|
|
"utility"
|
|
],
|
|
"folder": "hltb-for-deck",
|
|
"archiveBytes": 538045,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogButtonPrimary",
|
|
"DropdownItem",
|
|
"MenuItem",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"SliderField",
|
|
"SteamSpinner",
|
|
"ToggleField",
|
|
"afterPatch",
|
|
"appDetailsClasses",
|
|
"appDetailsHeaderClasses",
|
|
"createReactTreePatcher",
|
|
"definePlugin",
|
|
"fakeRenderComponent",
|
|
"findInReactTree",
|
|
"findInTree",
|
|
"findModuleChild",
|
|
"removeHookStubs",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"routerHook"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/morwy/hltb-for-deck"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Settings render without the prior IndexedDB SecurityError; Steam library badges have no patch target, and live lookup is unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 26,
|
|
"name": "HLTB for Deck",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "warn",
|
|
"message": "HLTB - LibraryContextMenu component not found"
|
|
}
|
|
],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 26,
|
|
"accepted": true,
|
|
"folder": "hltb-for-deck"
|
|
},
|
|
"backend": "no Python/native backend found",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 26,
|
|
"sha256": "bd54a23b0b8ec0798aa590e5be236522a593529d7680e77fb888e2971bf3d558",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 27,
|
|
"name": "AutoSuspend",
|
|
"version": "2.2.0",
|
|
"sha256": "20ceb9aa5327226326531d947e4a7a5318ba78b73f503266996a81877cffa536",
|
|
"tags": [
|
|
"battery",
|
|
"power-management",
|
|
"suspend",
|
|
"utility"
|
|
],
|
|
"folder": "decky-autosuspend",
|
|
"archiveBytes": 30982,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"decky-autosuspend/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Downloads.RegisterForDownloadItems",
|
|
"Input.RegisterForControllerInputMessages",
|
|
"Settings.RegisterForSettingsChanges",
|
|
"System",
|
|
"System.RegisterForOnResumeFromSuspend",
|
|
"System.RegisterForOnSuspendRequest",
|
|
"System.ShutdownPC",
|
|
"URL.ExecuteSteamURL",
|
|
"User.GetLoginUsers",
|
|
"User.RegisterForShutdownDone"
|
|
],
|
|
"dfl": [
|
|
"ConfirmModal",
|
|
"DialogBody",
|
|
"DialogButton",
|
|
"DialogControlsSection",
|
|
"DropdownItem",
|
|
"Field",
|
|
"Focusable",
|
|
"Navigation",
|
|
"SidebarNavigation",
|
|
"SliderField",
|
|
"TextField",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"findModuleChild",
|
|
"showModal",
|
|
"sleep",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/EMERALD0874/SDH-AudioLoader",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/jurassicplayer/decky-autosuspend",
|
|
"https://github.com/jurassicplayer/decky-autosuspend.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Frontend audit failed: Cannot read properties of null (reading '6').",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 27,
|
|
"name": "AutoSuspend",
|
|
"ready": false,
|
|
"error": "Cannot read properties of null (reading '6')",
|
|
"logs": [],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 27,
|
|
"accepted": true,
|
|
"folder": "decky-autosuspend"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 27,
|
|
"sha256": "20ceb9aa5327226326531d947e4a7a5318ba78b73f503266996a81877cffa536",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 28,
|
|
"name": "Emuchievements",
|
|
"version": "2.0.5",
|
|
"sha256": "98dcb443e81b9f9011cfe77c69eb659869c8e2df2df8b0a443df66cbfc2f5a89",
|
|
"tags": [
|
|
"EmuDeck",
|
|
"retroachievements"
|
|
],
|
|
"folder": "Emuchievements",
|
|
"archiveBytes": 1271502,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"Emuchievements/main.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "Emuchievements/bin/hash",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [
|
|
"Apps.RegisterForAppDetails",
|
|
"GameSessions.RegisterForAppLifetimeNotifications",
|
|
"User.RegisterForLoginStateChange"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"Dropdown",
|
|
"Field",
|
|
"Focusable",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ProgressBarItem",
|
|
"ProgressBarWithInfo",
|
|
"Router",
|
|
"SidebarNavigation",
|
|
"TextField",
|
|
"ToggleField",
|
|
"afterPatch",
|
|
"beforePatch",
|
|
"callOriginal",
|
|
"definePlugin",
|
|
"findInTree",
|
|
"findModuleChild",
|
|
"replacePatch",
|
|
"sleep",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"appDetailsStore",
|
|
"appStore",
|
|
"collectionStore",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/EmuDeck/Emuchievements",
|
|
"https://github.com/EmuDeck/Emuchievements.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: Emuchievements/bin/hash.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 28,
|
|
"name": "Emuchievements",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "rejection",
|
|
"message": "ReferenceError: collectionStore is not defined"
|
|
}
|
|
],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 28,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: Emuchievements/bin/hash"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"nativePort": "The bin/hash helper needs an ARM64 build and cross-platform hashing tests; no ARM64 artifact is published.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 28,
|
|
"sha256": "98dcb443e81b9f9011cfe77c69eb659869c8e2df2df8b0a443df66cbfc2f5a89",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: Emuchievements/bin/hash",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: Emuchievements/bin/hash."
|
|
}
|
|
},
|
|
{
|
|
"id": 30,
|
|
"name": "TunnelDeck",
|
|
"version": "1.0.4",
|
|
"sha256": "2698b31e53109b992e16f2e888a371a028a2c2719745261d4379d18bed9ac5c8",
|
|
"tags": [
|
|
"root",
|
|
"vpn"
|
|
],
|
|
"folder": "TunnelDeck",
|
|
"archiveBytes": 13863,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"TunnelDeck/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"Field",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"systemctl"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/bkohler616/TunnelDeck",
|
|
"https://github.com/bkohler616/TunnelDeck.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 30,
|
|
"name": "TunnelDeck",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "TypeError: connections.filter is not a function"
|
|
}
|
|
],
|
|
"methods": [
|
|
"active_connection",
|
|
"is_openvpn_pacman_installed",
|
|
"is_openvpn_enabled",
|
|
"show",
|
|
"reset_cached_data",
|
|
"get_priority_interface",
|
|
"is_internet_available",
|
|
"get_prioritized_network_info"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 30,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "systemctl",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 30,
|
|
"sha256": "2698b31e53109b992e16f2e888a371a028a2c2719745261d4379d18bed9ac5c8",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 32,
|
|
"name": "AutoFlatpaks",
|
|
"version": "1.6.8",
|
|
"sha256": "344fce82cfb4800caccb4d6c0ec46e1ad6c9594a622d5baa0bb31286baf2d1a5",
|
|
"tags": [
|
|
"flatpak",
|
|
"package-management",
|
|
"root",
|
|
"update",
|
|
"utility"
|
|
],
|
|
"folder": "decky-autoflatpaks",
|
|
"archiveBytes": 37818,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"decky-autoflatpaks/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"InstallFolder.GetInstallFolders"
|
|
],
|
|
"dfl": [
|
|
"ConfirmModal",
|
|
"DialogButton",
|
|
"Dropdown",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"ScrollPanel",
|
|
"SteamSpinner",
|
|
"Tabs",
|
|
"TextField",
|
|
"Toggle",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"findModuleChild",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"flatpak",
|
|
"x86_64"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/jurassicplayer/decky-autoflatpaks",
|
|
"https://github.com/jurassicplayer/decky-autoflatpaks.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 32,
|
|
"name": "AutoFlatpaks",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Uncaught TypeError: Cannot read properties of undefined (reading 'batteryState')"
|
|
}
|
|
],
|
|
"methods": [
|
|
"settings_getSetting"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 32,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "flatpak; x86_64",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 32,
|
|
"sha256": "344fce82cfb4800caccb4d6c0ec46e1ad6c9594a622d5baa0bb31286baf2d1a5",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 35,
|
|
"name": "MoonDeck",
|
|
"version": "1.13.0",
|
|
"sha256": "e43ad27e0ecb0c46076791d453e9ec27ae906752a10bc6269d628cc530ea4e19",
|
|
"tags": [
|
|
"gamestream",
|
|
"moondeck",
|
|
"moonlight",
|
|
"streaming"
|
|
],
|
|
"folder": "moondeck",
|
|
"archiveBytes": 10433357,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"moondeck/main.py",
|
|
"moondeck/python/cli.py",
|
|
"moondeck/python/lib/buddyclient.py",
|
|
"moondeck/python/lib/utils.py",
|
|
"moondeck/python/lib/logger.py",
|
|
"moondeck/python/lib/settingsmanager.py",
|
|
"moondeck/python/lib/runner/envparser.py",
|
|
"moondeck/python/lib/runner/settingsparser.py",
|
|
"moondeck/python/lib/runner/moondeckapprunner.py",
|
|
"moondeck/python/lib/runner/moonlightonlyrunner.py",
|
|
"moondeck/python/lib/runner/wolsplashscreen.py",
|
|
"moondeck/python/lib/gamestreaminfo.py",
|
|
"moondeck/python/lib/moonlightproxy.py",
|
|
"moondeck/python/lib/buddyrequests.py",
|
|
"moondeck/python/lib/plugin/settings.py",
|
|
"moondeck/python/lib/runnerresult.py",
|
|
"moondeck/python/lib/cli/utils.py",
|
|
"moondeck/python/lib/cli/settings.py",
|
|
"moondeck/python/lib/cli/cmd/app/launch.py",
|
|
"moondeck/python/lib/cli/cmd/app/clear.py",
|
|
"moondeck/python/lib/cli/cmd/app/list/non_steam.py",
|
|
"moondeck/python/lib/cli/cmd/app/close.py",
|
|
"moondeck/python/lib/cli/cmd/app/status.py",
|
|
"moondeck/python/lib/cli/cmd/stream/status.py",
|
|
"moondeck/python/lib/cli/cmd/stream/end.py",
|
|
"moondeck/python/lib/cli/cmd/steam/close/bpm.py",
|
|
"moondeck/python/lib/cli/cmd/steam/close/client.py",
|
|
"moondeck/python/lib/cli/cmd/steam/launch.py",
|
|
"moondeck/python/lib/cli/cmd/steam/status.py",
|
|
"moondeck/python/lib/cli/cmd/host/shutdown.py",
|
|
"moondeck/python/lib/cli/cmd/host/add.py",
|
|
"moondeck/python/lib/cli/cmd/host/restart.py",
|
|
"moondeck/python/lib/cli/cmd/host/ping.py",
|
|
"moondeck/python/lib/cli/cmd/host/scan.py",
|
|
"moondeck/python/lib/cli/cmd/host/wake.py",
|
|
"moondeck/python/lib/cli/cmd/host/pair.py",
|
|
"moondeck/python/lib/cli/cmd/host/suspend.py",
|
|
"moondeck/python/lib/cli/cmd/host/remove.py",
|
|
"moondeck/python/lib/cli/cmd/host/hibernate.py",
|
|
"moondeck/python/lib/cli/cmd/host/list.py",
|
|
"moondeck/python/lib/cli/cmd/host/default/set.py",
|
|
"moondeck/python/lib/cli/cmd/host/default/clear.py",
|
|
"moondeck/python/lib/constants.py",
|
|
"moondeck/python/lib/splashscreen/splashscreen.py",
|
|
"moondeck/python/lib/splashscreen/canvas.py",
|
|
"moondeck/python/lib/splashscreen/overlay.py",
|
|
"moondeck/python/lib/splashscreen/pallete.py",
|
|
"moondeck/python/lib/splashscreen/wolscreen.py",
|
|
"moondeck/python/lib/splashscreen/mainscreen.py",
|
|
"moondeck/python/externals/yarl/_path.py",
|
|
"moondeck/python/externals/yarl/_quoting.py",
|
|
"moondeck/python/externals/yarl/_query.py",
|
|
"moondeck/python/externals/yarl/_quoting_py.py",
|
|
"moondeck/python/externals/yarl/_parse.py",
|
|
"moondeck/python/externals/yarl/_url.py",
|
|
"moondeck/python/externals/yarl/_quoters.py",
|
|
"moondeck/python/externals/yarl/__init__.py",
|
|
"moondeck/python/externals/aiohttp/log.py",
|
|
"moondeck/python/externals/aiohttp/http_websocket.py",
|
|
"moondeck/python/externals/aiohttp/web_response.py",
|
|
"moondeck/python/externals/aiohttp/web_urldispatcher.py",
|
|
"moondeck/python/externals/aiohttp/base_protocol.py",
|
|
"moondeck/python/externals/aiohttp/web_middlewares.py",
|
|
"moondeck/python/externals/aiohttp/payload.py",
|
|
"moondeck/python/externals/aiohttp/tracing.py",
|
|
"moondeck/python/externals/aiohttp/client_ws.py",
|
|
"moondeck/python/externals/aiohttp/web_request.py",
|
|
"moondeck/python/externals/aiohttp/hdrs.py",
|
|
"moondeck/python/externals/aiohttp/helpers.py",
|
|
"moondeck/python/externals/aiohttp/web_exceptions.py",
|
|
"moondeck/python/externals/aiohttp/streams.py",
|
|
"moondeck/python/externals/aiohttp/web_log.py",
|
|
"moondeck/python/externals/aiohttp/web_server.py",
|
|
"moondeck/python/externals/aiohttp/test_utils.py",
|
|
"moondeck/python/externals/aiohttp/client_exceptions.py",
|
|
"moondeck/python/externals/aiohttp/web_ws.py",
|
|
"moondeck/python/externals/aiohttp/http.py",
|
|
"moondeck/python/externals/aiohttp/web_fileresponse.py",
|
|
"moondeck/python/externals/aiohttp/multipart.py",
|
|
"moondeck/python/externals/aiohttp/web_runner.py",
|
|
"moondeck/python/externals/aiohttp/http_parser.py",
|
|
"moondeck/python/externals/aiohttp/compression_utils.py",
|
|
"moondeck/python/externals/aiohttp/http_exceptions.py",
|
|
"moondeck/python/externals/aiohttp/worker.py",
|
|
"moondeck/python/externals/aiohttp/typedefs.py",
|
|
"moondeck/python/externals/aiohttp/formdata.py",
|
|
"moondeck/python/externals/aiohttp/tcp_helpers.py",
|
|
"moondeck/python/externals/aiohttp/_websocket/writer.py",
|
|
"moondeck/python/externals/aiohttp/_websocket/helpers.py",
|
|
"moondeck/python/externals/aiohttp/_websocket/reader_c.py",
|
|
"moondeck/python/externals/aiohttp/_websocket/models.py",
|
|
"moondeck/python/externals/aiohttp/_websocket/reader.py",
|
|
"moondeck/python/externals/aiohttp/_websocket/reader_py.py",
|
|
"moondeck/python/externals/aiohttp/_websocket/__init__.py",
|
|
"moondeck/python/externals/aiohttp/http_writer.py",
|
|
"moondeck/python/externals/aiohttp/web_app.py",
|
|
"moondeck/python/externals/aiohttp/connector.py",
|
|
"moondeck/python/externals/aiohttp/payload_streamer.py",
|
|
"moondeck/python/externals/aiohttp/pytest_plugin.py",
|
|
"moondeck/python/externals/aiohttp/client.py",
|
|
"moondeck/python/externals/aiohttp/web_protocol.py",
|
|
"moondeck/python/externals/aiohttp/__init__.py",
|
|
"moondeck/python/externals/aiohttp/cookiejar.py",
|
|
"moondeck/python/externals/aiohttp/web_routedef.py",
|
|
"moondeck/python/externals/aiohttp/resolver.py",
|
|
"moondeck/python/externals/aiohttp/client_proto.py",
|
|
"moondeck/python/externals/aiohttp/abc.py",
|
|
"moondeck/python/externals/aiohttp/web.py",
|
|
"moondeck/python/externals/aiohttp/client_reqrep.py",
|
|
"moondeck/python/externals/aiosignal/__init__.py",
|
|
"moondeck/python/externals/multidict/_abc.py",
|
|
"moondeck/python/externals/multidict/_multidict_py.py",
|
|
"moondeck/python/externals/multidict/__init__.py",
|
|
"moondeck/python/externals/multidict/_compat.py",
|
|
"moondeck/python/externals/ifaddr/netifaces.py",
|
|
"moondeck/python/externals/ifaddr/_posix.py",
|
|
"moondeck/python/externals/ifaddr/test_ifaddr.py",
|
|
"moondeck/python/externals/ifaddr/__init__.py",
|
|
"moondeck/python/externals/ifaddr/_shared.py",
|
|
"moondeck/python/externals/ifaddr/_win32.py",
|
|
"moondeck/python/externals/propcache/_helpers.py",
|
|
"moondeck/python/externals/propcache/_helpers_py.py",
|
|
"moondeck/python/externals/propcache/__init__.py",
|
|
"moondeck/python/externals/propcache/api.py",
|
|
"moondeck/python/externals/frozenlist/__init__.py",
|
|
"moondeck/python/externals/attrs/filters.py",
|
|
"moondeck/python/externals/attrs/converters.py",
|
|
"moondeck/python/externals/attrs/validators.py",
|
|
"moondeck/python/externals/attrs/exceptions.py",
|
|
"moondeck/python/externals/attrs/__init__.py",
|
|
"moondeck/python/externals/attrs/setters.py",
|
|
"moondeck/python/externals/idna/idnadata.py",
|
|
"moondeck/python/externals/idna/compat.py",
|
|
"moondeck/python/externals/idna/uts46data.py",
|
|
"moondeck/python/externals/idna/intranges.py",
|
|
"moondeck/python/externals/idna/codec.py",
|
|
"moondeck/python/externals/idna/package_data.py",
|
|
"moondeck/python/externals/idna/core.py",
|
|
"moondeck/python/externals/idna/__init__.py",
|
|
"moondeck/python/externals/aiohappyeyeballs/utils.py",
|
|
"moondeck/python/externals/aiohappyeyeballs/types.py",
|
|
"moondeck/python/externals/aiohappyeyeballs/_staggered.py",
|
|
"moondeck/python/externals/aiohappyeyeballs/impl.py",
|
|
"moondeck/python/externals/aiohappyeyeballs/__init__.py",
|
|
"moondeck/python/externals/zeroconf/_services/browser.py",
|
|
"moondeck/python/externals/zeroconf/_services/info.py",
|
|
"moondeck/python/externals/zeroconf/_services/registry.py",
|
|
"moondeck/python/externals/zeroconf/_services/types.py",
|
|
"moondeck/python/externals/zeroconf/_services/__init__.py",
|
|
"moondeck/python/externals/zeroconf/_listener.py",
|
|
"moondeck/python/externals/zeroconf/_logger.py",
|
|
"moondeck/python/externals/zeroconf/const.py",
|
|
"moondeck/python/externals/zeroconf/_cache.py",
|
|
"moondeck/python/externals/zeroconf/_record_update.py",
|
|
"moondeck/python/externals/zeroconf/_dns.py",
|
|
"moondeck/python/externals/zeroconf/_utils/asyncio.py",
|
|
"moondeck/python/externals/zeroconf/_utils/time.py",
|
|
"moondeck/python/externals/zeroconf/_utils/net.py",
|
|
"moondeck/python/externals/zeroconf/_utils/ipaddress.py",
|
|
"moondeck/python/externals/zeroconf/_utils/name.py",
|
|
"moondeck/python/externals/zeroconf/_utils/__init__.py",
|
|
"moondeck/python/externals/zeroconf/_updates.py",
|
|
"moondeck/python/externals/zeroconf/asyncio.py",
|
|
"moondeck/python/externals/zeroconf/_history.py",
|
|
"moondeck/python/externals/zeroconf/_engine.py",
|
|
"moondeck/python/externals/zeroconf/_protocol/incoming.py",
|
|
"moondeck/python/externals/zeroconf/_protocol/outgoing.py",
|
|
"moondeck/python/externals/zeroconf/_protocol/__init__.py",
|
|
"moondeck/python/externals/zeroconf/_transport.py",
|
|
"moondeck/python/externals/zeroconf/__init__.py",
|
|
"moondeck/python/externals/zeroconf/_core.py",
|
|
"moondeck/python/externals/zeroconf/_exceptions.py",
|
|
"moondeck/python/externals/zeroconf/_handlers/multicast_outgoing_queue.py",
|
|
"moondeck/python/externals/zeroconf/_handlers/record_manager.py",
|
|
"moondeck/python/externals/zeroconf/_handlers/answers.py",
|
|
"moondeck/python/externals/zeroconf/_handlers/__init__.py",
|
|
"moondeck/python/externals/zeroconf/_handlers/query_handler.py",
|
|
"moondeck/python/externals/wakeonlan/__init__.py",
|
|
"moondeck/python/externals/pyglet/resource.py",
|
|
"moondeck/python/externals/pyglet/display/xlib.py",
|
|
"moondeck/python/externals/pyglet/display/cocoa.py",
|
|
"moondeck/python/externals/pyglet/display/win32.py",
|
|
"moondeck/python/externals/pyglet/display/xlib_vidmoderestore.py",
|
|
"moondeck/python/externals/pyglet/display/__init__.py",
|
|
"moondeck/python/externals/pyglet/display/base.py",
|
|
"moondeck/python/externals/pyglet/display/headless.py",
|
|
"moondeck/python/externals/pyglet/math.py",
|
|
"moondeck/python/externals/pyglet/info.py",
|
|
"moondeck/python/externals/pyglet/image/codecs/gdiplus.py",
|
|
"moondeck/python/externals/pyglet/image/codecs/dds.py",
|
|
"moondeck/python/externals/pyglet/image/codecs/gif.py",
|
|
"moondeck/python/externals/pyglet/image/codecs/bmp.py",
|
|
"moondeck/python/externals/pyglet/image/codecs/png.py",
|
|
"moondeck/python/externals/pyglet/image/codecs/s3tc.py",
|
|
"moondeck/python/externals/pyglet/image/codecs/quartz.py",
|
|
"moondeck/python/externals/pyglet/image/codecs/wincodec_lib.py",
|
|
"moondeck/python/externals/pyglet/image/codecs/gdkpixbuf2.py",
|
|
"moondeck/python/externals/pyglet/image/codecs/__init__.py",
|
|
"moondeck/python/externals/pyglet/image/codecs/wic.py",
|
|
"moondeck/python/externals/pyglet/image/codecs/pil.py",
|
|
"moondeck/python/externals/pyglet/image/animation.py",
|
|
"moondeck/python/externals/pyglet/image/buffer.py",
|
|
"moondeck/python/externals/pyglet/image/atlas.py",
|
|
"moondeck/python/externals/pyglet/image/__init__.py",
|
|
"moondeck/python/externals/pyglet/app/xlib.py",
|
|
"moondeck/python/externals/pyglet/app/cocoa.py",
|
|
"moondeck/python/externals/pyglet/app/win32.py",
|
|
"moondeck/python/externals/pyglet/app/__init__.py",
|
|
"moondeck/python/externals/pyglet/app/base.py",
|
|
"moondeck/python/externals/pyglet/model/codecs/gltf.py",
|
|
"moondeck/python/externals/pyglet/model/codecs/obj.py",
|
|
"moondeck/python/externals/pyglet/model/codecs/__init__.py",
|
|
"moondeck/python/externals/pyglet/model/codecs/base.py",
|
|
"moondeck/python/externals/pyglet/model/__init__.py",
|
|
"moondeck/python/externals/pyglet/window/win32/__init__.py",
|
|
"moondeck/python/externals/pyglet/window/mouse.py",
|
|
"moondeck/python/externals/pyglet/window/xlib/__init__.py",
|
|
"moondeck/python/externals/pyglet/window/cocoa/pyglet_textview.py",
|
|
"moondeck/python/externals/pyglet/window/cocoa/pyglet_window.py",
|
|
"moondeck/python/externals/pyglet/window/cocoa/pyglet_delegate.py",
|
|
"moondeck/python/externals/pyglet/window/cocoa/pyglet_view.py",
|
|
"moondeck/python/externals/pyglet/window/cocoa/systemcursor.py",
|
|
"moondeck/python/externals/pyglet/window/cocoa/__init__.py",
|
|
"moondeck/python/externals/pyglet/window/headless/__init__.py",
|
|
"moondeck/python/externals/pyglet/window/key.py",
|
|
"moondeck/python/externals/pyglet/window/__init__.py",
|
|
"moondeck/python/externals/pyglet/window/event.py",
|
|
"moondeck/python/externals/pyglet/input/win32/xinput.py",
|
|
"moondeck/python/externals/pyglet/input/win32/wintab.py",
|
|
"moondeck/python/externals/pyglet/input/win32/__init__.py",
|
|
"moondeck/python/externals/pyglet/input/win32/directinput.py",
|
|
"moondeck/python/externals/pyglet/input/macos/__init__.py",
|
|
"moondeck/python/externals/pyglet/input/macos/darwin_hid.py",
|
|
"moondeck/python/externals/pyglet/input/controller.py",
|
|
"moondeck/python/externals/pyglet/input/linux/evdev_constants.py",
|
|
"moondeck/python/externals/pyglet/input/linux/evdev.py",
|
|
"moondeck/python/externals/pyglet/input/linux/x11_xinput_tablet.py",
|
|
"moondeck/python/externals/pyglet/input/linux/x11_xinput.py",
|
|
"moondeck/python/externals/pyglet/input/linux/__init__.py",
|
|
"moondeck/python/externals/pyglet/input/__init__.py",
|
|
"moondeck/python/externals/pyglet/input/controller_db.py",
|
|
"moondeck/python/externals/pyglet/input/base.py",
|
|
"moondeck/python/externals/pyglet/shapes.py",
|
|
"moondeck/python/externals/pyglet/experimental/particles.py",
|
|
"moondeck/python/externals/pyglet/experimental/hidraw.py",
|
|
"moondeck/python/externals/pyglet/experimental/geoshader_sprite.py",
|
|
"moondeck/python/externals/pyglet/experimental/multitexture_sprite.py",
|
|
"moondeck/python/externals/pyglet/experimental/net.py",
|
|
"moondeck/python/externals/pyglet/experimental/jobs.py",
|
|
"moondeck/python/externals/pyglet/gui/frame.py",
|
|
"moondeck/python/externals/pyglet/gui/ninepatch.py",
|
|
"moondeck/python/externals/pyglet/gui/widgets.py",
|
|
"moondeck/python/externals/pyglet/gui/__init__.py",
|
|
"moondeck/python/externals/pyglet/lib.py",
|
|
"moondeck/python/externals/pyglet/graphics/shader.py",
|
|
"moondeck/python/externals/pyglet/graphics/vertexbuffer.py",
|
|
"moondeck/python/externals/pyglet/graphics/instance.py",
|
|
"moondeck/python/externals/pyglet/graphics/vertexarray.py",
|
|
"moondeck/python/externals/pyglet/graphics/vertexdomain.py",
|
|
"moondeck/python/externals/pyglet/graphics/__init__.py",
|
|
"moondeck/python/externals/pyglet/graphics/allocation.py",
|
|
"moondeck/python/externals/pyglet/util.py",
|
|
"moondeck/python/externals/pyglet/media/devices/win32.py",
|
|
"moondeck/python/externals/pyglet/media/devices/__init__.py",
|
|
"moondeck/python/externals/pyglet/media/devices/base.py",
|
|
"moondeck/python/externals/pyglet/media/buffered_logger.py",
|
|
"moondeck/python/externals/pyglet/media/codecs/gstreamer.py",
|
|
"moondeck/python/externals/pyglet/media/codecs/ffmpeg.py",
|
|
"moondeck/python/externals/pyglet/media/codecs/ffmpeg_lib/libavformat.py",
|
|
"moondeck/python/externals/pyglet/media/codecs/ffmpeg_lib/libswresample.py",
|
|
"moondeck/python/externals/pyglet/media/codecs/ffmpeg_lib/compat.py",
|
|
"moondeck/python/externals/pyglet/media/codecs/ffmpeg_lib/libavutil.py",
|
|
"moondeck/python/externals/pyglet/media/codecs/ffmpeg_lib/__init__.py",
|
|
"moondeck/python/externals/pyglet/media/codecs/ffmpeg_lib/libavcodec.py",
|
|
"moondeck/python/externals/pyglet/media/codecs/ffmpeg_lib/libswscale.py",
|
|
"moondeck/python/externals/pyglet/media/codecs/pyogg.py",
|
|
"moondeck/python/externals/pyglet/media/codecs/wmf.py",
|
|
"moondeck/python/externals/pyglet/media/codecs/coreaudio.py",
|
|
"moondeck/python/externals/pyglet/media/codecs/wave.py",
|
|
"moondeck/python/externals/pyglet/media/codecs/__init__.py",
|
|
"moondeck/python/externals/pyglet/media/codecs/base.py",
|
|
"moondeck/python/externals/pyglet/media/exceptions.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/xaudio2/adaptation.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/xaudio2/interface.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/xaudio2/__init__.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/xaudio2/lib_xaudio2.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/silent/adaptation.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/silent/__init__.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/pulse/adaptation.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/pulse/lib_pulseaudio.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/pulse/interface.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/pulse/__init__.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/openal/adaptation.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/openal/lib_openal.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/openal/interface.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/openal/__init__.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/openal/lib_alc.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/directsound/adaptation.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/directsound/exceptions.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/directsound/interface.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/directsound/__init__.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/directsound/lib_dsound.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/listener.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/__init__.py",
|
|
"moondeck/python/externals/pyglet/media/drivers/base.py",
|
|
"moondeck/python/externals/pyglet/media/player_worker_thread.py",
|
|
"moondeck/python/externals/pyglet/media/__init__.py",
|
|
"moondeck/python/externals/pyglet/media/synthesis.py",
|
|
"moondeck/python/externals/pyglet/media/instrumentation.py",
|
|
"moondeck/python/externals/pyglet/media/player.py",
|
|
"moondeck/python/externals/pyglet/gl/lib_wgl.py",
|
|
"moondeck/python/externals/pyglet/gl/glxext_arb.py",
|
|
"moondeck/python/externals/pyglet/gl/xlib.py",
|
|
"moondeck/python/externals/pyglet/gl/gl_info.py",
|
|
"moondeck/python/externals/pyglet/gl/cocoa.py",
|
|
"moondeck/python/externals/pyglet/gl/wglext_arb.py",
|
|
"moondeck/python/externals/pyglet/gl/wglext_nv.py",
|
|
"moondeck/python/externals/pyglet/gl/wgl_info.py",
|
|
"moondeck/python/externals/pyglet/gl/win32.py",
|
|
"moondeck/python/externals/pyglet/gl/gl.py",
|
|
"moondeck/python/externals/pyglet/gl/glx_info.py",
|
|
"moondeck/python/externals/pyglet/gl/lib.py",
|
|
"moondeck/python/externals/pyglet/gl/glxext_mesa.py",
|
|
"moondeck/python/externals/pyglet/gl/lib_glx.py",
|
|
"moondeck/python/externals/pyglet/gl/agl.py",
|
|
"moondeck/python/externals/pyglet/gl/gl_compat.py",
|
|
"moondeck/python/externals/pyglet/gl/lib_agl.py",
|
|
"moondeck/python/externals/pyglet/gl/wgl.py",
|
|
"moondeck/python/externals/pyglet/gl/__init__.py",
|
|
"moondeck/python/externals/pyglet/gl/base.py",
|
|
"moondeck/python/externals/pyglet/gl/glx.py",
|
|
"moondeck/python/externals/pyglet/gl/headless.py",
|
|
"moondeck/python/externals/pyglet/gl/glxext_nv.py",
|
|
"moondeck/python/externals/pyglet/__init__.py",
|
|
"moondeck/python/externals/pyglet/libs/win32/types.py",
|
|
"moondeck/python/externals/pyglet/libs/win32/winkey.py",
|
|
"moondeck/python/externals/pyglet/libs/win32/dinput.py",
|
|
"moondeck/python/externals/pyglet/libs/win32/constants.py",
|
|
"moondeck/python/externals/pyglet/libs/win32/libwintab.py",
|
|
"moondeck/python/externals/pyglet/libs/win32/__init__.py",
|
|
"moondeck/python/externals/pyglet/libs/win32/context_managers.py",
|
|
"moondeck/python/externals/pyglet/libs/win32/com.py",
|
|
"moondeck/python/externals/pyglet/libs/ioctl.py",
|
|
"moondeck/python/externals/pyglet/libs/wayland/gbm.py",
|
|
"moondeck/python/externals/pyglet/libs/wayland/xkbcommon.py",
|
|
"moondeck/python/externals/pyglet/libs/wayland/__init__.py",
|
|
"moondeck/python/externals/pyglet/libs/darwin/coreaudio.py",
|
|
"moondeck/python/externals/pyglet/libs/darwin/cocoapy/cocoatypes.py",
|
|
"moondeck/python/externals/pyglet/libs/darwin/cocoapy/runtime.py",
|
|
"moondeck/python/externals/pyglet/libs/darwin/cocoapy/cocoalibs.py",
|
|
"moondeck/python/externals/pyglet/libs/darwin/cocoapy/__init__.py",
|
|
"moondeck/python/externals/pyglet/libs/darwin/quartzkey.py",
|
|
"moondeck/python/externals/pyglet/libs/darwin/__init__.py",
|
|
"moondeck/python/externals/pyglet/libs/egl/lib.py",
|
|
"moondeck/python/externals/pyglet/libs/egl/egl.py",
|
|
"moondeck/python/externals/pyglet/libs/egl/__init__.py",
|
|
"moondeck/python/externals/pyglet/libs/egl/eglext.py",
|
|
"moondeck/python/externals/pyglet/libs/__init__.py",
|
|
"moondeck/python/externals/pyglet/libs/x11/xlib.py",
|
|
"moondeck/python/externals/pyglet/libs/x11/xinerama.py",
|
|
"moondeck/python/externals/pyglet/libs/x11/cursorfont.py",
|
|
"moondeck/python/externals/pyglet/libs/x11/xrender.py",
|
|
"moondeck/python/externals/pyglet/libs/x11/xinput.py",
|
|
"moondeck/python/externals/pyglet/libs/x11/xf86vmode.py",
|
|
"moondeck/python/externals/pyglet/libs/x11/xrandr.py",
|
|
"moondeck/python/externals/pyglet/libs/x11/xsync.py",
|
|
"moondeck/python/externals/pyglet/libs/x11/__init__.py",
|
|
"moondeck/python/externals/pyglet/event.py",
|
|
"moondeck/python/externals/pyglet/sprite.py",
|
|
"moondeck/python/externals/pyglet/clock.py",
|
|
"moondeck/python/externals/pyglet/extlibs/earcut.py",
|
|
"moondeck/python/externals/pyglet/extlibs/png.py",
|
|
"moondeck/python/externals/pyglet/extlibs/__init__.py",
|
|
"moondeck/python/externals/pyglet/customtypes.py",
|
|
"moondeck/python/externals/pyglet/text/runlist.py",
|
|
"moondeck/python/externals/pyglet/text/document.py",
|
|
"moondeck/python/externals/pyglet/text/caret.py",
|
|
"moondeck/python/externals/pyglet/text/layout/incremental.py",
|
|
"moondeck/python/externals/pyglet/text/layout/scrolling.py",
|
|
"moondeck/python/externals/pyglet/text/layout/__init__.py",
|
|
"moondeck/python/externals/pyglet/text/layout/base.py",
|
|
"moondeck/python/externals/pyglet/text/__init__.py",
|
|
"moondeck/python/externals/pyglet/text/formats/structured.py",
|
|
"moondeck/python/externals/pyglet/text/formats/plaintext.py",
|
|
"moondeck/python/externals/pyglet/text/formats/html.py",
|
|
"moondeck/python/externals/pyglet/text/formats/attributed.py",
|
|
"moondeck/python/externals/pyglet/text/formats/__init__.py",
|
|
"moondeck/python/externals/pyglet/font/fontconfig.py",
|
|
"moondeck/python/externals/pyglet/font/freetype_lib.py",
|
|
"moondeck/python/externals/pyglet/font/quartz.py",
|
|
"moondeck/python/externals/pyglet/font/win32.py",
|
|
"moondeck/python/externals/pyglet/font/freetype.py",
|
|
"moondeck/python/externals/pyglet/font/ttf.py",
|
|
"moondeck/python/externals/pyglet/font/__init__.py",
|
|
"moondeck/python/externals/pyglet/font/base.py",
|
|
"moondeck/python/externals/pyglet/font/harfbuzz/harfbuzz_lib.py",
|
|
"moondeck/python/externals/pyglet/font/harfbuzz/__init__.py",
|
|
"moondeck/python/externals/pyglet/font/user.py",
|
|
"moondeck/python/externals/pyglet/font/dwrite/d2d1_lib.py",
|
|
"moondeck/python/externals/pyglet/font/dwrite/dwrite_lib.py",
|
|
"moondeck/python/externals/pyglet/font/dwrite/d2d1_types_lib.py",
|
|
"moondeck/python/externals/pyglet/font/dwrite/__init__.py",
|
|
"moondeck/python/externals/attr/_make.py",
|
|
"moondeck/python/externals/attr/_next_gen.py",
|
|
"moondeck/python/externals/attr/_funcs.py",
|
|
"moondeck/python/externals/attr/_version_info.py",
|
|
"moondeck/python/externals/attr/filters.py",
|
|
"moondeck/python/externals/attr/converters.py",
|
|
"moondeck/python/externals/attr/_cmp.py",
|
|
"moondeck/python/externals/attr/validators.py",
|
|
"moondeck/python/externals/attr/exceptions.py",
|
|
"moondeck/python/externals/attr/_config.py",
|
|
"moondeck/python/externals/attr/__init__.py",
|
|
"moondeck/python/externals/attr/setters.py",
|
|
"moondeck/python/externals/attr/_compat.py",
|
|
"moondeck/python/moondeckrun.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "moondeck/python/externals/yarl/_quoting_c.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/aiohttp/_http_parser.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/aiohttp/_websocket/reader_c.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/aiohttp/_websocket/mask.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/aiohttp/_http_writer.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/multidict/_multidict.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/propcache/_helpers_c.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/frozenlist/_frozenlist.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/zeroconf/_services/info.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/zeroconf/_services/__init__.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/zeroconf/_services/browser.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/zeroconf/_services/registry.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/zeroconf/_record_update.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/zeroconf/_cache.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/zeroconf/_utils/ipaddress.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/zeroconf/_utils/time.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/zeroconf/_protocol/outgoing.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/zeroconf/_protocol/incoming.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/zeroconf/_dns.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/zeroconf/_listener.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/zeroconf/_updates.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/zeroconf/_history.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/zeroconf/_handlers/multicast_outgoing_queue.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/zeroconf/_handlers/answers.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/zeroconf/_handlers/query_handler.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "moondeck/python/externals/zeroconf/_handlers/record_manager.cpython-313-x86_64-linux-gnu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [
|
|
"Apps.AddShortcut",
|
|
"Apps.CancelGameAction",
|
|
"Apps.GetResolutionOverrideForApp",
|
|
"Apps.RegisterForAppDetails",
|
|
"Apps.RegisterForGameActionEnd",
|
|
"Apps.RegisterForGameActionStart",
|
|
"Apps.RegisterForGameActionTaskChange",
|
|
"Apps.RemoveShortcut",
|
|
"Apps.RunGame",
|
|
"Apps.SetAppLaunchOptions",
|
|
"Apps.SetAppResolutionOverride",
|
|
"Apps.SetShortcutName",
|
|
"Apps.SetThirdPartyControllerConfiguration",
|
|
"Apps.TerminateApp",
|
|
"Apps.ToggleOverrideResolutionForInternalDisplay",
|
|
"GameSessions.RegisterForAppLifetimeNotifications",
|
|
"System.Audio.GetDevices",
|
|
"System.DisplayManager.RegisterForStateChanges",
|
|
"User.RegisterForLoginStateChange",
|
|
"User.StartRestart"
|
|
],
|
|
"dfl": [
|
|
"Button",
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogBody",
|
|
"DialogButton",
|
|
"DialogButtonPrimary",
|
|
"DialogButtonSecondary",
|
|
"DialogControlsSection",
|
|
"DialogControlsSectionHeader",
|
|
"DialogHeader",
|
|
"Dropdown",
|
|
"Field",
|
|
"Focusable",
|
|
"Menu",
|
|
"MenuItem",
|
|
"ModalRoot",
|
|
"NavEntryPositionPreferences",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"SidebarNavigation",
|
|
"Spinner",
|
|
"TextField",
|
|
"ToggleField",
|
|
"afterPatch",
|
|
"appDetailsClasses",
|
|
"appDetailsHeaderClasses",
|
|
"basicAppDetailsSectionStylerClasses",
|
|
"createReactTreePatcher",
|
|
"findInReactTree",
|
|
"findModuleExport",
|
|
"findSP",
|
|
"joinClassNames",
|
|
"playSectionClasses",
|
|
"showContextMenu",
|
|
"showModal",
|
|
"sleep",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"appStore",
|
|
"collectionStore",
|
|
"routerHook",
|
|
"toaster"
|
|
],
|
|
"hardwareSignals": [
|
|
"/dev/input",
|
|
"/sys/socket.h",
|
|
"amd64",
|
|
"flatpak",
|
|
"x86_64"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/FrogTheFrog/moondeck",
|
|
"https://github.com/FrogTheFrog/moondeck-buddy",
|
|
"https://github.com/KhronosGroup/glTF-Tutorials",
|
|
"https://github.com/SteamDeckHomebrew/cli",
|
|
"https://github.com/aio-libs/aiohttp",
|
|
"https://github.com/joshuaskelly/earcut-python",
|
|
"https://github.com/kennethreitz/requests",
|
|
"https://github.com/libsdl-org/SDL-1.2",
|
|
"https://github.com/phracker/MacOSX-SDKs",
|
|
"https://github.com/pyglet/pyglet",
|
|
"https://github.com/python-attrs/attrs",
|
|
"https://github.com/python-zeroconf/python-zeroconf",
|
|
"https://github.com/python/cpython",
|
|
"https://github.com/python/mypy",
|
|
"https://github.com/torvalds/linux"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: moondeck/python/externals/yarl/_quoting_c.cpython-313-x86_64-linux-gnu.so. Frontend initializes; native CPython wheels and executables in the published archive are x86_64.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 35,
|
|
"name": "MoonDeck",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 35,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: moondeck/python/externals/yarl/_quoting_c.cpython-313-x86_64-linux-gnu.so"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "/dev/input; /sys/socket.h; amd64; flatpak; x86_64",
|
|
"nativePort": "Rebuild vendored CPython 3.13 extension wheels for the headset Python ABI and ARM64; buddy/helper dependencies also need ports.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 35,
|
|
"sha256": "e43ad27e0ecb0c46076791d453e9ec27ae906752a10bc6269d628cc530ea4e19",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: moondeck/python/externals/yarl/_quoting_c.cpython-313-x86_64-linux-gnu.so",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: moondeck/python/externals/yarl/_quoting_c.cpython-313-x86_64-linux-gnu.so. Frontend initializes; native CPython wheels and executables in the published archive are x86_64."
|
|
}
|
|
},
|
|
{
|
|
"id": 36,
|
|
"name": "SteamGridDB",
|
|
"version": "1.8.1",
|
|
"sha256": "e84f5b1f111af8862b06218479491fbf61036e1bfd9f16f93f9901e9b9ebc5e0",
|
|
"tags": [
|
|
"artwork",
|
|
"sgdb"
|
|
],
|
|
"folder": "decky-steamgriddb",
|
|
"archiveBytes": 3438092,
|
|
"api": 1,
|
|
"flags": [
|
|
"debug"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-steamgriddb/main.py",
|
|
"decky-steamgriddb/py_modules/vdf/__init__.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Apps.ClearCustomArtworkForApp",
|
|
"Apps.RegisterForAppDetails",
|
|
"Apps.SetCustomArtworkForApp",
|
|
"Apps.SetShortcutName",
|
|
"User.StartRestart"
|
|
],
|
|
"dfl": [
|
|
"ConfirmModal",
|
|
"ControlsList",
|
|
"DialogBody",
|
|
"DialogBodyText",
|
|
"DialogButton",
|
|
"DialogButtonPrimary",
|
|
"DialogCheckbox",
|
|
"DialogControlsSection",
|
|
"DialogControlsSectionHeader",
|
|
"DialogFooter",
|
|
"DialogHeader",
|
|
"Dropdown",
|
|
"Field",
|
|
"Focusable",
|
|
"IconsModule",
|
|
"Marquee",
|
|
"Menu",
|
|
"MenuItem",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ProgressBar",
|
|
"ReorderableList",
|
|
"SliderField",
|
|
"Spinner",
|
|
"Tabs",
|
|
"TextField",
|
|
"ToggleField",
|
|
"afterPatch",
|
|
"appDetailsHeaderClasses",
|
|
"callOriginal",
|
|
"createModuleMapping",
|
|
"definePlugin",
|
|
"fakeRenderComponent",
|
|
"findClassModule",
|
|
"findInReactTree",
|
|
"findInTree",
|
|
"findModule",
|
|
"findModuleByExport",
|
|
"findModuleExport",
|
|
"findSP",
|
|
"joinClassNames",
|
|
"quickAccessMenuClasses",
|
|
"replacePatch",
|
|
"showContextMenu",
|
|
"showModal",
|
|
"useParams",
|
|
"wrapReactType"
|
|
],
|
|
"globals": [
|
|
"appDetailsStore",
|
|
"appStore",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamGridDB/decky-steamgriddb"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Local module mapping is available; frontend still requires the Steam LibraryContextMenu implementation, which has no target in the isolated Framey panel.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 36,
|
|
"name": "SteamGridDB",
|
|
"ready": false,
|
|
"error": "Cannot convert undefined or null to object",
|
|
"logs": [],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 36,
|
|
"accepted": true,
|
|
"folder": "decky-steamgriddb"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 36,
|
|
"sha256": "e84f5b1f111af8862b06218479491fbf61036e1bfd9f16f93f9901e9b9ebc5e0",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 37,
|
|
"name": "Discord Status",
|
|
"version": "1.5.0",
|
|
"sha256": "00a45dd919abb6e050685e1e408ce8023b9c4a09d6e91ba528d50aed2a63bf45",
|
|
"tags": [
|
|
"discord"
|
|
],
|
|
"folder": "DiscordStatus",
|
|
"archiveBytes": 465208,
|
|
"api": 1,
|
|
"flags": [
|
|
"debug"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"DiscordStatus/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Apps.RegisterForAppDetails",
|
|
"Apps.RunGame",
|
|
"GameSessions.RegisterForAppLifetimeNotifications",
|
|
"User.RegisterForPrepareForSystemSuspendProgress",
|
|
"User.RegisterForResumeSuspendedGamesProgress"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DropdownItem",
|
|
"Field",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"Spinner",
|
|
"sleep",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"appStore",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/andrewburgess/steamdeck-discord-status",
|
|
"https://github.com/andrewburgess/steamdeck-discord-status.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Disconnected panel renders; running-activity construction accepts a synthetic game in local Chromium. Exact official is_connected returned false in real Decky 3.3.0 ARM64. Empty live running-list reads and lifetime registration/cleanup passed. Real game transitions, Discord shortcut detection/connection/activity, local custom artwork and worn VR remain unverified/unsupported.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame",
|
|
"real Frame SSH"
|
|
],
|
|
"browser": {
|
|
"id": 37,
|
|
"name": "Discord Status",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "rejection",
|
|
"message": "TypeError: DFL.Router.RunningApps is not iterable"
|
|
},
|
|
{
|
|
"kind": "rejection",
|
|
"message": "ReferenceError: appStore is not defined"
|
|
}
|
|
],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 37,
|
|
"accepted": true,
|
|
"folder": "DiscordStatus"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"toasts",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 37,
|
|
"sha256": "00a45dd919abb6e050685e1e408ce8023b9c4a09d6e91ba528d50aed2a63bf45",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"libraryFollowUp": {
|
|
"evidence": "docs/evidence/framey-library-context-2026-10-26.json",
|
|
"mode": "real Frame read-only CEF projection; local Chromium snapshot replay; scoped actual amd64 backends",
|
|
"frontendReady": true
|
|
},
|
|
"runningFollowUp": {
|
|
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
|
|
"mode": "synthetic nonempty running/library replay; backend and network denied",
|
|
"frontendReady": true
|
|
}
|
|
},
|
|
{
|
|
"id": 38,
|
|
"name": "Volume Mixer",
|
|
"version": "1.2.1-1",
|
|
"sha256": "11b259ad234d0e97cfef4e6a2af3f1edfb0908d5482765af56b86b0a4601c5f3",
|
|
"tags": [
|
|
"media",
|
|
"volume"
|
|
],
|
|
"folder": "VolumeMixer-decky",
|
|
"archiveBytes": 208635,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"VolumeMixer-decky/main.py",
|
|
"VolumeMixer-decky/dbussy/dbussy.py",
|
|
"VolumeMixer-decky/dbussy/setup.py",
|
|
"VolumeMixer-decky/dbussy/ravel.py",
|
|
"VolumeMixer-decky/pulsectl/lookup.py",
|
|
"VolumeMixer-decky/pulsectl/__init__.py",
|
|
"VolumeMixer-decky/pulsectl/_pulsectl.py",
|
|
"VolumeMixer-decky/pulsectl/pulsectl.py",
|
|
"VolumeMixer-decky/lib/x/sax/expatreader.py",
|
|
"VolumeMixer-decky/lib/x/sax/handler.py",
|
|
"VolumeMixer-decky/lib/x/sax/_exceptions.py",
|
|
"VolumeMixer-decky/lib/x/sax/saxutils.py",
|
|
"VolumeMixer-decky/lib/x/sax/__init__.py",
|
|
"VolumeMixer-decky/lib/x/sax/xmlreader.py",
|
|
"VolumeMixer-decky/lib/x/dom/domreg.py",
|
|
"VolumeMixer-decky/lib/x/dom/expatbuilder.py",
|
|
"VolumeMixer-decky/lib/x/dom/__init__.py",
|
|
"VolumeMixer-decky/lib/x/dom/minicompat.py",
|
|
"VolumeMixer-decky/lib/x/dom/xmlbuilder.py",
|
|
"VolumeMixer-decky/lib/x/dom/NodeFilter.py",
|
|
"VolumeMixer-decky/lib/x/dom/minidom.py",
|
|
"VolumeMixer-decky/lib/x/dom/pulldom.py",
|
|
"VolumeMixer-decky/lib/x/parsers/expat.py",
|
|
"VolumeMixer-decky/lib/x/parsers/__init__.py",
|
|
"VolumeMixer-decky/lib/x/__init__.py",
|
|
"VolumeMixer-decky/lib/x/etree/ElementPath.py",
|
|
"VolumeMixer-decky/lib/x/etree/ElementInclude.py",
|
|
"VolumeMixer-decky/lib/x/etree/ElementTree.py",
|
|
"VolumeMixer-decky/lib/x/etree/__init__.py",
|
|
"VolumeMixer-decky/lib/x/etree/cElementTree.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"DialogButton",
|
|
"Focusable",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"SliderField",
|
|
"definePlugin",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"sudo"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/bluez/bluez",
|
|
"https://github.com/isiah-lloyd/VolumeMixer-decky",
|
|
"https://github.com/ldo/dbussy",
|
|
"https://github.com/mk-fg/python-pulse-control"
|
|
],
|
|
"status": "works",
|
|
"reason": "Per-app stream discovery and slider/keyboard volume changes pass in local Chromium through real Decky 3.3.0 ARM64 on the Frame audio session, with independent Pulse readback of a silent test stream. Bluetooth playback, audible output and worn-VR controls unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame",
|
|
"isolated Linux backend",
|
|
"real Frame SSH"
|
|
],
|
|
"browser": {
|
|
"id": 38,
|
|
"name": "Volume Mixer",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "[VolumeMixer] Error while calling get_sink_inputs"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_sink_inputs"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 38,
|
|
"accepted": true,
|
|
"folder": "VolumeMixer-decky"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "PulseAudio/PipeWire, libpulse/libdbus and D-Bus; optional Bluetooth playback",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 38,
|
|
"sha256": "11b259ad234d0e97cfef4e6a2af3f1edfb0908d5482765af56b86b0a4601c5f3",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"localBackend": {
|
|
"runtime": "Decky 3.3.0 amd64",
|
|
"evidence": "docs/evidence/framey-audio-backends-2026-10-26.json",
|
|
"audio": "private silent virtual targets",
|
|
"realFrame": false
|
|
}
|
|
},
|
|
{
|
|
"id": 40,
|
|
"name": "Controller Tools",
|
|
"version": "2.0.2",
|
|
"sha256": "9450e54cbf28082d4513838d0dcd42bf04ffc08ae5a6472d0c1f88677782e3ef",
|
|
"tags": [
|
|
"controller",
|
|
"gamepad",
|
|
"nintendo",
|
|
"playstation",
|
|
"switch",
|
|
"xbox"
|
|
],
|
|
"folder": "ControllerTools",
|
|
"archiveBytes": 4462155,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"ControllerTools/main.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "ControllerTools/bin/backend",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"gamepadDialogClasses",
|
|
"joinClassNames",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/alphamercury/ControllerTools",
|
|
"https://github.com/alphamercury/ControllerTools.git",
|
|
"https://github.com/jfernandez/ControllerTools"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: ControllerTools/bin/backend. Frontend audit failed: Audit blocks WebSocket.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 40,
|
|
"name": "Controller Tools",
|
|
"ready": false,
|
|
"error": "Audit blocks WebSocket",
|
|
"logs": [],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 40,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: ControllerTools/bin/backend"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"nativePort": "Native backend needs an ARM64 build and controller/HID dependencies; its direct websocket also bypasses the Framey bridge.",
|
|
"uiSurfaces": [
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 40,
|
|
"sha256": "9450e54cbf28082d4513838d0dcd42bf04ffc08ae5a6472d0c1f88677782e3ef",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: ControllerTools/bin/backend",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: ControllerTools/bin/backend. Frontend audit failed: Audit blocks WebSocket."
|
|
}
|
|
},
|
|
{
|
|
"id": 43,
|
|
"name": "Tailscale Control",
|
|
"version": "0.1.3",
|
|
"sha256": "06411711b27101d438339000da3d91202d682862710b02ef3ddf2462e642448a",
|
|
"tags": [
|
|
"tailscale"
|
|
],
|
|
"folder": "tailscale-control",
|
|
"archiveBytes": 14727,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"debug"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"tailscale-control/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DropdownItem",
|
|
"Field",
|
|
"Focusable",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"SuspensefulImage",
|
|
"TextField",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/saumya-banthia/tailscale-control",
|
|
"https://github.com/saumya-banthia/tailscale-control.git",
|
|
"https://github.com/tailscale-dev/deck-tailscale"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Settings render locally after the SuspensefulImage fallback. Tailscale daemon/state, connection and exit-node changes unverified; bundled localhost QR asset remains unavailable. No network settings were changed.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 43,
|
|
"name": "Tailscale Control",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_tailscale_state"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 43,
|
|
"accepted": true,
|
|
"folder": "tailscale-control"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 43,
|
|
"sha256": "06411711b27101d438339000da3d91202d682862710b02ef3ddf2462e642448a",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 44,
|
|
"name": "DeckMTP",
|
|
"version": "1.0.5",
|
|
"sha256": "a60cbe438226109a21a3eabf881a73460bfb9d70871b70a1508cfa17e3fed496",
|
|
"tags": [
|
|
"file-transfer",
|
|
"media",
|
|
"root",
|
|
"utility"
|
|
],
|
|
"folder": "DeckMTP",
|
|
"archiveBytes": 55653,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"DeckMTP/main.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "DeckMTP/bin/umtprd",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/dafta/DeckMTP",
|
|
"https://github.com/dafta/DeckMTP.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: DeckMTP/bin/umtprd.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 44,
|
|
"name": "DeckMTP",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "rejection",
|
|
"message": "Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "rejection",
|
|
"message": "Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"is_drd_enabled",
|
|
"is_running"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 44,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: DeckMTP/bin/umtprd"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"nativePort": "umtprd needs ARM64 libusb/MTP dependencies and USB gadget permissions; root user-service blocker remains.",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 44,
|
|
"sha256": "a60cbe438226109a21a3eabf881a73460bfb9d70871b70a1508cfa17e3fed496",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: DeckMTP/bin/umtprd",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 46,
|
|
"name": "Steamback",
|
|
"version": "1.0.0-1",
|
|
"sha256": "ed5f2fbb47cdfc3aa9a4349a139ab20c29976117a3be0de7e8a588bb265ee7f3",
|
|
"tags": [
|
|
"backup",
|
|
"steamback"
|
|
],
|
|
"folder": "Steamback",
|
|
"archiveBytes": 90658,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"Steamback/main.py",
|
|
"Steamback/py_modules/steamback/test.py",
|
|
"Steamback/py_modules/steamback/__init__.py",
|
|
"Steamback/py_modules/steamback/util.py",
|
|
"Steamback/py_modules/steamback/gui.py",
|
|
"Steamback/py_modules/steamback/__main__.py",
|
|
"Steamback/py_modules/steamback/test.py",
|
|
"Steamback/py_modules/steamback/__init__.py",
|
|
"Steamback/py_modules/steamback/util.py",
|
|
"Steamback/py_modules/steamback/gui.py",
|
|
"Steamback/py_modules/steamback/__main__.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"GameSessions.RegisterForAppLifetimeNotifications",
|
|
"InstallFolder.GetInstallFolders"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"definePlugin",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"appStore",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/geeksville/steamback",
|
|
"https://github.com/geeksville/steamback.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Panel opens using the real Frame current-user/library snapshot. Account setup and empty save-list reads pass through actual Decky 3.3.0 amd64 in isolation. ARM64 backend, supported-save discovery, automatic backups and restore remain unverified; no backup/restore ran.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame",
|
|
"real Frame SSH"
|
|
],
|
|
"browser": {
|
|
"id": 46,
|
|
"name": "Steamback",
|
|
"ready": false,
|
|
"error": "Cannot read properties of undefined (reading 'm_CurrentUser')",
|
|
"logs": [],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 46,
|
|
"accepted": false,
|
|
"reason": "Unsafe plugin archive member"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"toasts",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 46,
|
|
"sha256": "ed5f2fbb47cdfc3aa9a4349a139ab20c29976117a3be0de7e8a588bb265ee7f3",
|
|
"archiveValidation": "Unsafe plugin archive member",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Unsafe plugin archive member. Frontend audit failed: App is not defined."
|
|
},
|
|
"libraryFollowUp": {
|
|
"evidence": "docs/evidence/framey-library-context-2026-10-26.json",
|
|
"mode": "real Frame read-only CEF projection; local Chromium snapshot replay; scoped actual amd64 backends",
|
|
"frontendReady": true
|
|
},
|
|
"runningFollowUp": {
|
|
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
|
|
"mode": "synthetic nonempty running/library replay; backend and network denied",
|
|
"frontendReady": true
|
|
}
|
|
},
|
|
{
|
|
"id": 48,
|
|
"name": "Quick Launch",
|
|
"version": "1.2.1",
|
|
"sha256": "709746bfe2a7e19bda54b4de0b3f4a311053de10fa58aa070d421dbf92317ede",
|
|
"tags": [
|
|
"utility"
|
|
],
|
|
"folder": "SDH-QuickLaunch",
|
|
"archiveBytes": 23036,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"SDH-QuickLaunch/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Apps.AddShortcut",
|
|
"Apps.RunGame",
|
|
"Apps.SetCustomArtworkForApp",
|
|
"Apps.SetShortcutExe",
|
|
"Apps.SetShortcutLaunchOptions",
|
|
"Apps.SetShortcutName",
|
|
"Apps.SpecifyCompatTool"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogButton",
|
|
"Dropdown",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"TextField",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"appStore",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"flatpak"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/Fisch03/SDH-QuickLaunch",
|
|
"https://github.com/Fisch03/SDH-QuickLaunch.git",
|
|
"https://github.com/SteamDeckHomebrew/PluginLoader"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 48,
|
|
"name": "Quick Launch",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "rejection",
|
|
"message": "undefined"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_config"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 48,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "flatpak",
|
|
"uiSurfaces": [
|
|
"toasts",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 48,
|
|
"sha256": "709746bfe2a7e19bda54b4de0b3f4a311053de10fa58aa070d421dbf92317ede",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service."
|
|
}
|
|
},
|
|
{
|
|
"id": 49,
|
|
"name": "Decky Cloud Save",
|
|
"version": "1.4.2",
|
|
"sha256": "b311d967ddf1b0f0046d36929645855891a40173e3a93f6f0cd8b1576b04b411",
|
|
"tags": [
|
|
"backup",
|
|
"cloud",
|
|
"rclone"
|
|
],
|
|
"folder": "decky-cloud-save",
|
|
"archiveBytes": 19497581,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"decky-cloud-save/main.py",
|
|
"decky-cloud-save/py_modules/rclone_sync_manager.py",
|
|
"decky-cloud-save/py_modules/logger_utils.py",
|
|
"decky-cloud-save/py_modules/decky_plugin.py",
|
|
"decky-cloud-save/py_modules/process_utils.py",
|
|
"decky-cloud-save/py_modules/plugin_config.py",
|
|
"decky-cloud-save/py_modules/rclone_setup_manager.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "decky-cloud-save/bin/rclone",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [
|
|
"GameSessions.RegisterForAppLifetimeNotifications",
|
|
"Settings",
|
|
"Settings.GetCurrentLanguage"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"Menu",
|
|
"MenuItem",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"TextField",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"showContextMenu",
|
|
"showModal",
|
|
"sleep",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"appStore",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/GedasFX/decky-cloud-save",
|
|
"https://github.com/GedasFX/decky-cloud-save.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Unsafe plugin archive member.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 49,
|
|
"name": "Decky Cloud Save",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "rejection",
|
|
"message": "TypeError: Cannot read properties of null (reading 'callPluginMethod')"
|
|
},
|
|
{
|
|
"kind": "rejection",
|
|
"message": "Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_config",
|
|
"get_backend_type",
|
|
"get_log_level"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 49,
|
|
"accepted": false,
|
|
"reason": "Unsafe plugin archive member"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"nativePort": "rclone needs an ARM64 artifact; this ZIP also fails safe member validation. Cloud writes were not exercised.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 49,
|
|
"sha256": "b311d967ddf1b0f0046d36929645855891a40173e3a93f6f0cd8b1576b04b411",
|
|
"archiveValidation": "Unsafe plugin archive member",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Unsafe plugin archive member."
|
|
}
|
|
},
|
|
{
|
|
"id": 50,
|
|
"name": "Storage Cleaner",
|
|
"version": "1.4.0",
|
|
"sha256": "1afa1a6f129c5d419de0e0bf0f6db8d8e50385a5659179346e996031ea372591",
|
|
"tags": [
|
|
"cache",
|
|
"cleaner",
|
|
"compatdata",
|
|
"compatibility",
|
|
"data",
|
|
"disk",
|
|
"other",
|
|
"shader",
|
|
"storage",
|
|
"utility"
|
|
],
|
|
"folder": "decky-storage-cleaner",
|
|
"archiveBytes": 460621,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-storage-cleaner/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Apps.RegisterForAppDetails"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogCheckbox",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"definePlugin",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/mcarlucci/decky-storage-cleaner",
|
|
"https://github.com/mcarlucci/decky-storage-cleaner.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Empty-data panel rendered; cleanup was deliberately not run because it can remove local data.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 50,
|
|
"name": "Storage Cleaner",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"list_games_with_temp_data",
|
|
"get_size"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 50,
|
|
"accepted": true,
|
|
"folder": "decky-storage-cleaner"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 50,
|
|
"sha256": "1afa1a6f129c5d419de0e0bf0f6db8d8e50385a5659179346e996031ea372591",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 52,
|
|
"name": "Game Theme Music",
|
|
"version": "1.7.1-1",
|
|
"sha256": "9ce293ab4db212c03c6b96dfbc5e4d92e874d33387463f53223773921f75a80e",
|
|
"tags": [
|
|
"audio"
|
|
],
|
|
"folder": "SDH-GameThemeMusic",
|
|
"archiveBytes": 5607583,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"SDH-GameThemeMusic/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"GameSessions.RegisterForAppLifetimeNotifications"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogButton",
|
|
"DropdownItem",
|
|
"Field",
|
|
"Focusable",
|
|
"Menu",
|
|
"MenuItem",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ProgressBarWithInfo",
|
|
"SliderField",
|
|
"SteamSpinner",
|
|
"Tabs",
|
|
"TextField",
|
|
"ToggleField",
|
|
"afterPatch",
|
|
"appDetailsClasses",
|
|
"createReactTreePatcher",
|
|
"definePlugin",
|
|
"fakeRenderComponent",
|
|
"findInReactTree",
|
|
"findInTree",
|
|
"findModuleChild",
|
|
"showContextMenu",
|
|
"showModal",
|
|
"staticClasses",
|
|
"useParams"
|
|
],
|
|
"globals": [
|
|
"appStore",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/EMERALD0874/SDH-AudioLoader",
|
|
"https://github.com/MegalonVII/SDH-GameThemeMusic",
|
|
"https://github.com/MegalonVII/SDH-GameThemeMusic.git",
|
|
"https://github.com/OMGDuke/protondb-decky",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/yt-dlp/yt-dlp"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Frontend audit failed: Cannot read properties of null (reading 'type').",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 52,
|
|
"name": "Game Theme Music",
|
|
"ready": false,
|
|
"error": "Cannot read properties of null (reading 'type')",
|
|
"logs": [],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 52,
|
|
"accepted": true,
|
|
"folder": "SDH-GameThemeMusic"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 52,
|
|
"sha256": "9ce293ab4db212c03c6b96dfbc5e4d92e874d33387463f53223773921f75a80e",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 53,
|
|
"name": "Shotty",
|
|
"version": "0.1.0",
|
|
"sha256": "ab7f6618b264a0cb766525e788cef6c3e1478c0fef98a701225e5e8af441e2fe",
|
|
"tags": [
|
|
"screenshots"
|
|
],
|
|
"folder": "Shotty",
|
|
"archiveBytes": 2408903,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"debug"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"Shotty/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"GameSessions.RegisterForScreenshotNotification"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"definePlugin",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"appStore",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"gamescope"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/safijari/Shotty"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Library snapshot fixes the frontend allApps crash. Actual published Decky 3.3.0 amd64 backend fails importing click.get_app_dir (ModuleNotFoundError); the archive does not bundle click. Screenshot aggregation/rescue was not run.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame",
|
|
"real Frame SSH"
|
|
],
|
|
"browser": {
|
|
"id": 53,
|
|
"name": "Shotty",
|
|
"ready": false,
|
|
"error": "Cannot read properties of undefined (reading 'allApps')",
|
|
"logs": [],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 53,
|
|
"accepted": true,
|
|
"folder": "Shotty"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "gamescope",
|
|
"uiSurfaces": [
|
|
"toasts",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 53,
|
|
"sha256": "ab7f6618b264a0cb766525e788cef6c3e1478c0fef98a701225e5e8af441e2fe",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"libraryFollowUp": {
|
|
"evidence": "docs/evidence/framey-library-context-2026-10-26.json",
|
|
"mode": "real Frame read-only CEF projection; local Chromium snapshot replay; scoped actual amd64 backends",
|
|
"frontendReady": true
|
|
}
|
|
},
|
|
{
|
|
"id": 56,
|
|
"name": "MangoPeel",
|
|
"version": "0.0.7",
|
|
"sha256": "71dc21ce5f9f4ee0573bd927e9b444d45dc47327888ca78ed063c7bcc57bfac1",
|
|
"tags": [
|
|
"mangoapp",
|
|
"mangohud"
|
|
],
|
|
"folder": "MangoPeel",
|
|
"archiveBytes": 1029027,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"MangoPeel/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DropdownItem",
|
|
"Field",
|
|
"Focusable",
|
|
"Marquee",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SliderField",
|
|
"Tabs",
|
|
"TextField",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"findModuleChild",
|
|
"showModal",
|
|
"sleep",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/Gawah/MangoPeel",
|
|
"https://github.com/Gawah/MangoPeel.git",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/flightlessmango/MangoHud"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; gamescope/MangoHud actions and backend are unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 56,
|
|
"name": "MangoPeel",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_steamChannel",
|
|
"get_steamIndex"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 56,
|
|
"accepted": true,
|
|
"folder": "MangoPeel"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 56,
|
|
"sha256": "71dc21ce5f9f4ee0573bd927e9b444d45dc47327888ca78ed063c7bcc57bfac1",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"runningFollowUp": {
|
|
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
|
|
"mode": "synthetic nonempty running/library replay; backend and network denied",
|
|
"frontendReady": true
|
|
}
|
|
},
|
|
{
|
|
"id": 58,
|
|
"name": "Volume Boost",
|
|
"version": "0.0.7",
|
|
"sha256": "2cc576a7f60751306d690268e227df626e59d3733680ced753de4c116629a9cc",
|
|
"tags": [
|
|
"audio",
|
|
"boost",
|
|
"booster",
|
|
"loud",
|
|
"sound",
|
|
"volume"
|
|
],
|
|
"folder": "volume-boost",
|
|
"archiveBytes": 8447,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"volume-boost/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"SliderField",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"pactl"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/saumya-banthia/volume-boost",
|
|
"https://github.com/saumya-banthia/volume-boost.git"
|
|
],
|
|
"status": "works",
|
|
"reason": "Default-sink controls pass in local Chromium through real Decky 3.3.0 ARM64: linked slider/keyboard and numeric writes, separate channels, re-link and reopen, with independent Pulse readback including 125%/150% while muted. Exact original volume/mute restored. Audible output, Bluetooth sinks and worn VR unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame",
|
|
"isolated Linux backend",
|
|
"real Frame SSH"
|
|
],
|
|
"browser": {
|
|
"id": 58,
|
|
"name": "Volume Boost",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to get volume for channel: left"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_volume_state"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 58,
|
|
"accepted": true,
|
|
"folder": "volume-boost"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "PulseAudio/PipeWire and pactl; hard-coded /run/user/1000",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 58,
|
|
"sha256": "2cc576a7f60751306d690268e227df626e59d3733680ced753de4c116629a9cc",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"localBackend": {
|
|
"runtime": "Decky 3.3.0 amd64",
|
|
"evidence": "docs/evidence/framey-audio-backends-2026-10-26.json",
|
|
"audio": "private silent virtual targets",
|
|
"realFrame": false
|
|
}
|
|
},
|
|
{
|
|
"id": 59,
|
|
"name": "Web Browser",
|
|
"version": "1.4.3",
|
|
"sha256": "1192864fddc5d72550346b8dff02c21d71f0c40a06ac41c4e67bb6220d267f9d",
|
|
"tags": [
|
|
"browser",
|
|
"internet",
|
|
"web"
|
|
],
|
|
"folder": "DeckWebBrowser",
|
|
"archiveBytes": 91859,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"DeckWebBrowser/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"GameSessions.RegisterForAppLifetimeNotifications",
|
|
"Input.ControllerKeyboardSetKeyState",
|
|
"Overlay.RegisterForOverlayActivated",
|
|
"System",
|
|
"System.RegisterForOnResumeFromSuspend"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogBodyText",
|
|
"DialogButton",
|
|
"DialogButtonSecondary",
|
|
"DialogSubHeader",
|
|
"DropdownItem",
|
|
"Field",
|
|
"Focusable",
|
|
"GamepadButton",
|
|
"Marquee",
|
|
"Menu",
|
|
"MenuGroup",
|
|
"MenuItem",
|
|
"ModalPosition",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SimpleModal",
|
|
"SteamSpinner",
|
|
"Tabs",
|
|
"TextField",
|
|
"ToggleField",
|
|
"afterPatch",
|
|
"definePlugin",
|
|
"findClassModule",
|
|
"findInReactTree",
|
|
"findModuleChild",
|
|
"gamepadContextMenuClasses",
|
|
"gamepadDialogClasses",
|
|
"gamepadTabbedPageClasses",
|
|
"getFocusNavController",
|
|
"getReactRoot",
|
|
"quickAccessControlsClasses",
|
|
"replacePatch",
|
|
"showContextMenu",
|
|
"showModal",
|
|
"sleep",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/jessebofill/DeckWebBrowser",
|
|
"https://github.com/jessebofill/DeckWebBrowser.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "The exact frontend now initializes with a null Steam React-root lookup. The browser itself still requires Steam GamepadUI CDP injection and a backend WebSocket unavailable in Framey; no working browser tab was verified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame",
|
|
"focused local browser"
|
|
],
|
|
"browser": {
|
|
"id": 59,
|
|
"name": "Web Browser",
|
|
"ready": false,
|
|
"error": "deckyFrontendLib.getReactRoot is not a function",
|
|
"logs": [
|
|
{
|
|
"kind": "warn",
|
|
"message": "%c Web Browser %c Styling %c background: #7627D3; color: #E5E1EA; background: #AF70F9; color: black; background: transparent; No SP Window"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "%c Web Browser %c background: #7627D3; color: #E5E1EA; background: transparent; Error setting main tab for establishing ws server Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "%c Web Browser %c Settings Manager %c background: #7627D3; color: #E5E1EA; background: #AF70F9; color: black; background: transparent; Failed to load settings"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "%c Web Browser %c Settings Manager %c background: #7627D3; color: #E5E1EA; background: #AF70F9; color: black; background: transparent; Failed to load favorites"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "%c Web Browser %c Settings Manager %c background: #7627D3; color: #E5E1EA; background: #AF70F9; color: black; background: transparent; Failed to load history"
|
|
}
|
|
],
|
|
"methods": [
|
|
"set_main_tab",
|
|
"load"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 59,
|
|
"accepted": true,
|
|
"folder": "DeckWebBrowser"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 59,
|
|
"sha256": "1192864fddc5d72550346b8dff02c21d71f0c40a06ac41c4e67bb6220d267f9d",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"focusedBrowser": {
|
|
"hostChange": "DFL.getReactRoot returns null without exposing a Steam tree",
|
|
"ready": true,
|
|
"error": null,
|
|
"methods": [
|
|
"set_main_tab",
|
|
"load"
|
|
],
|
|
"backendAndNetwork": "denied",
|
|
"scope": "initializer only; no usable browser tab or real backend verified"
|
|
}
|
|
},
|
|
{
|
|
"id": 60,
|
|
"name": "DeckyFileServer",
|
|
"version": "1.2.0",
|
|
"sha256": "7dc2ecdcd05aa415d1ac90afaff28ecb17f77809a2bc7a77aee8e92505b976f0",
|
|
"tags": [
|
|
"root"
|
|
],
|
|
"folder": "DeckyFileServer",
|
|
"archiveBytes": 10166271,
|
|
"api": 1,
|
|
"flags": [
|
|
"_root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"DeckyFileServer/main.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "DeckyFileServer/bin/backend",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogBody",
|
|
"DialogButton",
|
|
"DialogFooter",
|
|
"DialogHeader",
|
|
"DialogSubHeader",
|
|
"DropdownItem",
|
|
"Field",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"TextField",
|
|
"Toggle",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/SteamDeckHomebrew/decky-plugin-template.git",
|
|
"https://github.com/grimkor/DeckyFileServer"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: DeckyFileServer/bin/backend.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 60,
|
|
"name": "DeckyFileServer",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_status"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 60,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: DeckyFileServer/bin/backend"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"nativePort": "Native file-server backend needs ARM64 dependencies; root requirement also blocks the user service.",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 60,
|
|
"sha256": "7dc2ecdcd05aa415d1ac90afaff28ecb17f77809a2bc7a77aee8e92505b976f0",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: DeckyFileServer/bin/backend",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 61,
|
|
"name": "TabMaster",
|
|
"version": "2.15.1",
|
|
"sha256": "e08333859a32b0c177b8e9a7959c5eeeafe38f946578f7f1d161c721f0e05da5",
|
|
"tags": [
|
|
"Customization",
|
|
"Library",
|
|
"Tabs"
|
|
],
|
|
"folder": "TabMaster",
|
|
"archiveBytes": 5712641,
|
|
"api": 1,
|
|
"flags": [
|
|
"debug"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"TabMaster/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Apps.GetStoreTagLocalization",
|
|
"GameSessions.RegisterForAppLifetimeNotifications",
|
|
"InstallFolder.RegisterForInstallFolderChanges",
|
|
"System",
|
|
"System.RegisterForOnResumeFromSuspend",
|
|
"System.RestartPC",
|
|
"User.RegisterForLoginStateChange"
|
|
],
|
|
"dfl": [
|
|
"Button",
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogBody",
|
|
"DialogButton",
|
|
"DialogCheckbox",
|
|
"DialogControlsSection",
|
|
"DialogHeader",
|
|
"Dropdown",
|
|
"DropdownItem",
|
|
"Field",
|
|
"Focusable",
|
|
"GamepadButton",
|
|
"Marquee",
|
|
"Menu",
|
|
"MenuGroup",
|
|
"MenuItem",
|
|
"ModalPosition",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ReorderableList",
|
|
"ScrollPanelGroup",
|
|
"SidebarNavigation",
|
|
"SliderField",
|
|
"TextField",
|
|
"ToggleField",
|
|
"achievementClasses",
|
|
"afterPatch",
|
|
"findInReactTree",
|
|
"findInTree",
|
|
"findModuleExport",
|
|
"gamepadContextMenuClasses",
|
|
"gamepadDialogClasses",
|
|
"gamepadSliderClasses",
|
|
"gamepadTabbedPageClasses",
|
|
"joinClassNames",
|
|
"mainMenuAppRunningClasses",
|
|
"quickAccessControlsClasses",
|
|
"quickAccessMenuClasses",
|
|
"replacePatch",
|
|
"scrollPanelClasses",
|
|
"showContextMenu",
|
|
"showModal",
|
|
"sleep",
|
|
"wrapReactType"
|
|
],
|
|
"globals": [
|
|
"DeckyPluginLoader",
|
|
"appStore",
|
|
"collectionStore",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/Tormak9970/TabMaster",
|
|
"https://github.com/Tormak9970/TabMaster.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Local Chromium rendered the QAM and navigable Overview/Filters documentation with an actual Decky 3.3.0 amd64 backend. Library-tab editing remains unavailable: Steam login/library patches and MobX reactions have no target. ARM64 and worn VR unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 61,
|
|
"name": "TabMaster",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "%c TabMaster %c ERROR %c background: #ff6d05; color: black; background: #c70808; color: black; background: transparent; Could not find mobx.reaction"
|
|
}
|
|
],
|
|
"methods": [
|
|
"log_message"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 61,
|
|
"accepted": true,
|
|
"folder": "TabMaster"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 61,
|
|
"sha256": "e08333859a32b0c177b8e9a7959c5eeeafe38f946578f7f1d161c721f0e05da5",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"runningFollowUp": {
|
|
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
|
|
"mode": "synthetic nonempty running/library replay; backend and network denied",
|
|
"frontendReady": true
|
|
}
|
|
},
|
|
{
|
|
"id": 62,
|
|
"name": "TS3 QuickAccess",
|
|
"version": "1.2.0",
|
|
"sha256": "04c853f6e0e20373d1262bf9a57a01f4123598797d73c8a52cdcc64cfe44845c",
|
|
"tags": [
|
|
"teamspeak"
|
|
],
|
|
"folder": "ts3-qs4sd",
|
|
"archiveBytes": 112416,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"ts3-qs4sd/main.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "ts3-qs4sd/bin/ts3-qs4sd.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"DialogBody",
|
|
"DialogButton",
|
|
"DialogFooter",
|
|
"DialogHeader",
|
|
"Dropdown",
|
|
"Field",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"SliderField",
|
|
"TextField",
|
|
"definePlugin",
|
|
"showModal"
|
|
],
|
|
"globals": [],
|
|
"hardwareSignals": [
|
|
"flatpak"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/ILadis/ts3-qs4sd",
|
|
"https://github.com/SteamDeckHomebrew/PluginLoader",
|
|
"https://github.com/TeamSpeak-Systems/ts3client-pluginsdk",
|
|
"https://github.com/cesanta/mongoose"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: ts3-qs4sd/bin/ts3-qs4sd.so.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 62,
|
|
"name": "TS3 QuickAccess",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "rejection",
|
|
"message": "Error: failed to fetch status"
|
|
}
|
|
],
|
|
"methods": [
|
|
"status"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 62,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: ts3-qs4sd/bin/ts3-qs4sd.so"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "flatpak",
|
|
"nativePort": "TeamSpeak client plugin must match an ARM64 TeamSpeak client and SDK ABI, not merely rebuild the .so.",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 62,
|
|
"sha256": "04c853f6e0e20373d1262bf9a57a01f4123598797d73c8a52cdcc64cfe44845c",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: ts3-qs4sd/bin/ts3-qs4sd.so",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: ts3-qs4sd/bin/ts3-qs4sd.so."
|
|
}
|
|
},
|
|
{
|
|
"id": 63,
|
|
"name": "Free Loader",
|
|
"version": "1.6.0",
|
|
"sha256": "05208aee6f6ba824391d8ddc81b1168b2599a9711e7528cdaa789f6cc710b42a",
|
|
"tags": [
|
|
"epic",
|
|
"epic games store",
|
|
"free",
|
|
"game",
|
|
"games",
|
|
"gog",
|
|
"itch.io",
|
|
"library",
|
|
"loader",
|
|
"notifications",
|
|
"steam",
|
|
"store"
|
|
],
|
|
"folder": "free-loader",
|
|
"archiveBytes": 2349632,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"free-loader/main.py",
|
|
"free-loader/py_modules/amazon_feed.py",
|
|
"free-loader/py_modules/deal_db.py",
|
|
"free-loader/py_modules/request_lib.py",
|
|
"free-loader/py_modules/plugin_settings.py",
|
|
"free-loader/py_modules/__init__.py",
|
|
"free-loader/py_modules/amazon_feed.py",
|
|
"free-loader/py_modules/deal_db.py",
|
|
"free-loader/py_modules/request_lib.py",
|
|
"free-loader/py_modules/plugin_settings.py",
|
|
"free-loader/py_modules/__init__.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogButton",
|
|
"Focusable",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"QuickAccessTab",
|
|
"SliderField",
|
|
"SteamSpinner",
|
|
"ToggleField",
|
|
"showModal"
|
|
],
|
|
"globals": [
|
|
"DeckyPluginLoader",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/eikowagenknecht/lootscraper",
|
|
"https://github.com/jwhitlow45/free-loader",
|
|
"https://github.com/jwhitlow45/free-loader.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Unsafe plugin archive member.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 63,
|
|
"name": "Free Loader",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"settings_read",
|
|
"logger_error",
|
|
"read_deals",
|
|
"logger_info"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 63,
|
|
"accepted": false,
|
|
"reason": "Unsafe plugin archive member"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 63,
|
|
"sha256": "05208aee6f6ba824391d8ddc81b1168b2599a9711e7528cdaa789f6cc710b42a",
|
|
"archiveValidation": "Unsafe plugin archive member",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Unsafe plugin archive member."
|
|
}
|
|
},
|
|
{
|
|
"id": 64,
|
|
"name": "Syncthing",
|
|
"version": "0.2.7",
|
|
"sha256": "27e47379c280c92253d5533435f57c33b332b215f866d2ac4493daf18ec0d1c4",
|
|
"tags": [
|
|
"backup",
|
|
"cloud",
|
|
"files",
|
|
"services",
|
|
"synchronization",
|
|
"syncthing"
|
|
],
|
|
"folder": "decky-syncthing",
|
|
"archiveBytes": 4283688,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"debug"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"decky-syncthing/main.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "decky-syncthing/bin/decky-syncthing-watchdog",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"DialogBody",
|
|
"DialogButton",
|
|
"DialogControlsSection",
|
|
"DialogControlsSectionHeader",
|
|
"DialogHeader",
|
|
"Dropdown",
|
|
"Field",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ProgressBarItem",
|
|
"QuickAccessTab",
|
|
"Router",
|
|
"SidebarNavigation",
|
|
"Spinner",
|
|
"SteamSpinner",
|
|
"TextField",
|
|
"Toggle",
|
|
"definePlugin",
|
|
"showModal",
|
|
"sleep",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"flatpak",
|
|
"gamescope"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/theCapypara/steamdeck-decky-syncthing",
|
|
"https://github.com/theCapypara/steamdeck-decky-syncthing.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: decky-syncthing/bin/decky-syncthing-watchdog.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 64,
|
|
"name": "Syncthing",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Decky Syncthing: failed loading state: Error: Audit blocks plugin network"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Decky Syncthing: failed loading state: Error: Audit blocks plugin network"
|
|
}
|
|
],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 64,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: decky-syncthing/bin/decky-syncthing-watchdog"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "flatpak; gamescope",
|
|
"nativePort": "The watchdog needs an ARM64 build, plus a supported Syncthing runtime/package and safe path validation.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 64,
|
|
"sha256": "27e47379c280c92253d5533435f57c33b332b215f866d2ac4493daf18ec0d1c4",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: decky-syncthing/bin/decky-syncthing-watchdog",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: decky-syncthing/bin/decky-syncthing-watchdog."
|
|
}
|
|
},
|
|
{
|
|
"id": 65,
|
|
"name": "Decky Terminal",
|
|
"version": "0.5.3",
|
|
"sha256": "7bd8765ca57663a24178b05687acb52c3723518ac9eac1c14419a87904c0a872",
|
|
"tags": [
|
|
"terminal"
|
|
],
|
|
"folder": "decky-terminal",
|
|
"archiveBytes": 641277,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-terminal/main.py",
|
|
"decky-terminal/py_modules/decky_terminal/common.py",
|
|
"decky-terminal/py_modules/decky_terminal/terminal.py",
|
|
"decky-terminal/py_modules/decky_terminal/nato.py",
|
|
"decky-terminal/py_modules/decky_terminal/__init__.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"DialogButton",
|
|
"Dropdown",
|
|
"Field",
|
|
"Focusable",
|
|
"GamepadButton",
|
|
"PanelSection",
|
|
"Router",
|
|
"SidebarNavigation",
|
|
"SteamSpinner",
|
|
"TextField",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"staticClasses",
|
|
"useParams"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/Alex4386/decky-terminal",
|
|
"https://github.com/user-attachments/assets"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Local routes initialize after parameter-route support; no shell commands were run.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 65,
|
|
"name": "Decky Terminal",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_terminals"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 65,
|
|
"accepted": true,
|
|
"folder": "decky-terminal"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 65,
|
|
"sha256": "7bd8765ca57663a24178b05687acb52c3723518ac9eac1c14419a87904c0a872",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 66,
|
|
"name": "PlayTime",
|
|
"version": "3.2.5",
|
|
"sha256": "10fc3beea48991c77cb02867e919b618d4cd6d5e9c6a6d0ccd5266c13214039f",
|
|
"tags": [
|
|
"playtime",
|
|
"time-tracking",
|
|
"utility"
|
|
],
|
|
"folder": "SDH-PlayTime",
|
|
"archiveBytes": 4215471,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"SDH-PlayTime/main.py",
|
|
"SDH-PlayTime/py_modules/time_tracking.py",
|
|
"SDH-PlayTime/py_modules/tests/helpers_test.py",
|
|
"SDH-PlayTime/py_modules/tests/main_test.py",
|
|
"SDH-PlayTime/py_modules/tests/utils/camel_case_test.py",
|
|
"SDH-PlayTime/py_modules/tests/association_manager_test.py",
|
|
"SDH-PlayTime/py_modules/tests/helpers.py",
|
|
"SDH-PlayTime/py_modules/tests/games.py",
|
|
"SDH-PlayTime/py_modules/tests/files_test.py",
|
|
"SDH-PlayTime/py_modules/tests/db/dao_test.py",
|
|
"SDH-PlayTime/py_modules/tests/db/migration_test.py",
|
|
"SDH-PlayTime/py_modules/tests/db/__init__.py",
|
|
"SDH-PlayTime/py_modules/tests/user_manager_test.py",
|
|
"SDH-PlayTime/py_modules/tests/tracking_manager_test.py",
|
|
"SDH-PlayTime/py_modules/tests/time_tracking_test.py",
|
|
"SDH-PlayTime/py_modules/tests/games_test.py",
|
|
"SDH-PlayTime/py_modules/tests/__init__.py",
|
|
"SDH-PlayTime/py_modules/dto/save_game_checksum.py",
|
|
"SDH-PlayTime/py_modules/dto/statistics/daily_statistics_for_period.py",
|
|
"SDH-PlayTime/py_modules/dto/time/add_time.py",
|
|
"SDH-PlayTime/py_modules/dto/time/__init__.py",
|
|
"SDH-PlayTime/py_modules/dto/time/apply_manual_time_correction.py",
|
|
"SDH-PlayTime/py_modules/dto/__init__.py",
|
|
"SDH-PlayTime/py_modules/utils/camel_case.py",
|
|
"SDH-PlayTime/py_modules/helpers.py",
|
|
"SDH-PlayTime/py_modules/tracking_manager.py",
|
|
"SDH-PlayTime/py_modules/games.py",
|
|
"SDH-PlayTime/py_modules/user_manager.py",
|
|
"SDH-PlayTime/py_modules/files.py",
|
|
"SDH-PlayTime/py_modules/db/dao.py",
|
|
"SDH-PlayTime/py_modules/db/migration.py",
|
|
"SDH-PlayTime/py_modules/db/__init__.py",
|
|
"SDH-PlayTime/py_modules/db/sqlite_db.py",
|
|
"SDH-PlayTime/py_modules/schemas/request.py",
|
|
"SDH-PlayTime/py_modules/schemas/response.py",
|
|
"SDH-PlayTime/py_modules/schemas/common.py",
|
|
"SDH-PlayTime/py_modules/schemas/__init__.py",
|
|
"SDH-PlayTime/py_modules/association_manager.py",
|
|
"SDH-PlayTime/py_modules/statistics.py",
|
|
"SDH-PlayTime/py_modules/__init__.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Apps.RegisterForAppDetails",
|
|
"Input.RegisterForControllerInputMessages",
|
|
"Storage.GetJSON",
|
|
"Storage.SetObject",
|
|
"System",
|
|
"System.RegisterForOnResumeFromSuspend",
|
|
"System.RegisterForOnSuspendRequest",
|
|
"User",
|
|
"User.RegisterForLoginStateChange",
|
|
"User.RegisterForPrepareForSystemSuspendProgress",
|
|
"User.RegisterForResumeSuspendedGamesProgress"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogButton",
|
|
"Dropdown",
|
|
"Field",
|
|
"Focusable",
|
|
"Menu",
|
|
"MenuGroup",
|
|
"MenuItem",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ScrollPanelGroup",
|
|
"SidebarNavigation",
|
|
"Tabs",
|
|
"TextField",
|
|
"afterPatch",
|
|
"definePlugin",
|
|
"findClass",
|
|
"findSP",
|
|
"showContextMenu",
|
|
"showModal",
|
|
"staticClasses",
|
|
"useParams"
|
|
],
|
|
"globals": [
|
|
"SteamUIStore",
|
|
"appStore",
|
|
"collectionStore",
|
|
"routerHook",
|
|
"toaster"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/0u73r-h34v3n/PlayTime",
|
|
"https://github.com/pnpm/pnpm",
|
|
"https://github.com/your-username/PlayTime"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Statistics and routed settings render with a detached real Frame library/user snapshot and actual Decky 3.3.0 amd64 backend in isolation. User selection and empty statistics reads pass. Running snapshots are now exposed, but its private MobX observation is unsupported; automatic recording and ARM64 backend remain unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame",
|
|
"real Frame SSH"
|
|
],
|
|
"browser": {
|
|
"id": 66,
|
|
"name": "PlayTime",
|
|
"ready": false,
|
|
"error": "Cannot read properties of undefined (reading 'm_mapApps')",
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "%c PlayTime %c ERROR background: #16a085; color: black; background: #FF000040; Impossible to get \"RunningApps\" observe. Events will not be attached."
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "%c PlayTime %c ERROR background: #16a085; color: black; background: #FF000040; Unable to get settings, saving defaults Error: Not found"
|
|
}
|
|
],
|
|
"methods": [
|
|
"fetch_playtime_information",
|
|
"statistics_for_last_two_weeks"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 66,
|
|
"accepted": true,
|
|
"folder": "SDH-PlayTime"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 66,
|
|
"sha256": "10fc3beea48991c77cb02867e919b618d4cd6d5e9c6a6d0ccd5266c13214039f",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"libraryFollowUp": {
|
|
"evidence": "docs/evidence/framey-library-context-2026-10-26.json",
|
|
"mode": "real Frame read-only CEF projection; local Chromium snapshot replay; scoped actual amd64 backends",
|
|
"frontendReady": true
|
|
},
|
|
"runningFollowUp": {
|
|
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
|
|
"mode": "synthetic nonempty running/library replay; backend and network denied",
|
|
"frontendReady": true
|
|
}
|
|
},
|
|
{
|
|
"id": 67,
|
|
"name": "Battery Tracker",
|
|
"version": "0.2.0",
|
|
"sha256": "91c388d3c1b52079314045b79671ad55c767510658b6193f6936ed6cad383b94",
|
|
"tags": [
|
|
"root",
|
|
"template"
|
|
],
|
|
"folder": "steam-deck-battery-tracker",
|
|
"archiveBytes": 7570,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"_root"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"steam-deck-battery-tracker/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SliderField",
|
|
"definePlugin",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"/sys/class/power_supply/BAT1/capacity",
|
|
"/sys/class/power_supply/BAT1/current_now",
|
|
"/sys/class/power_supply/BAT1/status",
|
|
"/sys/class/power_supply/BAT1/voltage_now"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/safijari/steam-deck-battery-tracker",
|
|
"https://github.com/safijari/steam-deck-battery-tracker.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 67,
|
|
"name": "Battery Tracker",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "TypeError: Cannot read properties of undefined (reading 'map')"
|
|
},
|
|
{
|
|
"kind": "rejection",
|
|
"message": "TypeError: Cannot read properties of undefined (reading 'length')"
|
|
}
|
|
],
|
|
"methods": [
|
|
"set_app",
|
|
"get_recent_data"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 67,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "/sys/class/power_supply/BAT1/capacity; /sys/class/power_supply/BAT1/current_now; /sys/class/power_supply/BAT1/status; /sys/class/power_supply/BAT1/voltage_now",
|
|
"uiSurfaces": [
|
|
"local/Steam routes"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 67,
|
|
"sha256": "91c388d3c1b52079314045b79671ad55c767510658b6193f6936ed6cad383b94",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 68,
|
|
"name": "Wine Cellar",
|
|
"version": "0.2.1",
|
|
"sha256": "7e077b933c234414d172b5c6d1c804b026bf39fa4e18e6663495a282637031e8",
|
|
"tags": [
|
|
"boxtron",
|
|
"luxtorpeda",
|
|
"proton",
|
|
"proton-cachyos",
|
|
"proton-ge",
|
|
"wine"
|
|
],
|
|
"folder": "decky-wine-cellar",
|
|
"archiveBytes": 1936664,
|
|
"api": 1,
|
|
"flags": [
|
|
"debug"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-wine-cellar/main.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "decky-wine-cellar/bin/backend",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [
|
|
"Apps.GetAvailableCompatTools",
|
|
"Apps.SpecifyCompatTool",
|
|
"InstallFolder.GetInstallFolders",
|
|
"Settings.GetGlobalCompatTools",
|
|
"User.StartRestart"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogBody",
|
|
"DialogButton",
|
|
"DialogControlsSection",
|
|
"DialogControlsSectionHeader",
|
|
"Dropdown",
|
|
"Field",
|
|
"Focusable",
|
|
"GamepadButton",
|
|
"Menu",
|
|
"MenuItem",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ProgressBar",
|
|
"Router",
|
|
"ScrollPanelGroup",
|
|
"SidebarNavigation",
|
|
"TextField",
|
|
"definePlugin",
|
|
"showContextMenu",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"appStore",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/FlashyReese/decky-wine-cellar",
|
|
"https://github.com/FlashyReese/decky-wine-cellar.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: decky-wine-cellar/bin/backend. Frontend audit failed: Audit blocks WebSocket.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 68,
|
|
"name": "Wine Cellar",
|
|
"ready": false,
|
|
"error": "Audit blocks WebSocket",
|
|
"logs": [],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 68,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: decky-wine-cellar/bin/backend"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"nativePort": "Native backend needs an ARM64 build; direct websocket and Wine runtime assumptions also need integration.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 68,
|
|
"sha256": "7e077b933c234414d172b5c6d1c804b026bf39fa4e18e6663495a282637031e8",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: decky-wine-cellar/bin/backend",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: decky-wine-cellar/bin/backend. Frontend audit failed: Audit blocks WebSocket."
|
|
}
|
|
},
|
|
{
|
|
"id": 70,
|
|
"name": "MicroSDeck",
|
|
"version": "0.11.2",
|
|
"sha256": "adec614a26864f6747245bd78b45c7e4b2fa46200b5e7aa5f55f610d2daad870",
|
|
"tags": [
|
|
"manager",
|
|
"microsd",
|
|
"sdcard"
|
|
],
|
|
"folder": "MicroSDeck",
|
|
"archiveBytes": 7124958,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"debug"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"MicroSDeck/main.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "MicroSDeck/bin/backend",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ConfirmModal",
|
|
"DialogButton",
|
|
"DialogCheckbox",
|
|
"Field",
|
|
"Focusable",
|
|
"Menu",
|
|
"MenuItem",
|
|
"ModalPosition",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"ReorderableList",
|
|
"ScrollPanelGroup",
|
|
"SideMenu",
|
|
"SidebarNavigation",
|
|
"SimpleModal",
|
|
"TextField",
|
|
"ToggleField",
|
|
"afterPatch",
|
|
"appDetailsClasses",
|
|
"createReactTreePatcher",
|
|
"definePlugin",
|
|
"findInReactTree",
|
|
"findModule",
|
|
"findModuleChild",
|
|
"gamepadDialogClasses",
|
|
"quickAccessControlsClasses",
|
|
"showContextMenu",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"collectionStore",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/CEbbinghaus/MicroSDeck"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: MicroSDeck/bin/backend.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 70,
|
|
"name": "MicroSDeck",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "%c MicroSDeck %c Error: %c Failed to fetch \"http://localhost:12412/health\" with error Error: Audit blocks plugin network background: #165da0; color: black; background: #d63a57; color: black; background: transparent; color:#6e6e6e; [object Object]"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Error: Minified React error #31; visit https://reactjs.org/docs/error-decoder.html?invariant=31&args[]=object%20with%20keys%20%7B%24%24typeof%2C%20type%2C%20key%2C%20ref%2C%20props%7D for the full message or use the non-minified dev environment for full errors and additional helpful warnings."
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Error: Minified React error #31; visit https://reactjs.org/docs/error-decoder.html?invariant=31&args[]=object%20with%20keys%20%7B%24%24typeof%2C%20type%2C%20key%2C%20ref%2C%20props%7D for the full message or use the non-minified dev environment for full errors and additional helpful warnings."
|
|
}
|
|
],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 70,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: MicroSDeck/bin/backend"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"nativePort": "Native backend needs an ARM64 build and block-device/mount permission audit; no storage actions were run.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 70,
|
|
"sha256": "adec614a26864f6747245bd78b45c7e4b2fa46200b5e7aa5f55f610d2daad870",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: MicroSDeck/bin/backend",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: MicroSDeck/bin/backend."
|
|
}
|
|
},
|
|
{
|
|
"id": 72,
|
|
"name": "ScreenshotUploader",
|
|
"version": "0.0.3",
|
|
"sha256": "60152ca9a49b3a7c4fe1ac89a2ccb3bada8c84de2c1869591e6e573165d9dd6d",
|
|
"tags": [
|
|
"screenshots",
|
|
"uploader"
|
|
],
|
|
"folder": "DeckScreenshotManager",
|
|
"archiveBytes": 24595,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"DeckScreenshotManager/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"GameSessions.RegisterForScreenshotNotification",
|
|
"Screenshots.UploadLocalScreenshot"
|
|
],
|
|
"dfl": [
|
|
"DropdownItem",
|
|
"Field",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"findModuleChild",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/codehz/DeckScreenshotManager",
|
|
"https://github.com/codehz/DeckScreenshotManager.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; screenshot upload requires external credentials/network and was not run.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 72,
|
|
"name": "ScreenshotUploader",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"getCounter",
|
|
"getSetting"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 72,
|
|
"accepted": true,
|
|
"folder": "DeckScreenshotManager"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"toasts",
|
|
"Steam page patches/module lookup"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 72,
|
|
"sha256": "60152ca9a49b3a7c4fe1ac89a2ccb3bada8c84de2c1869591e6e573165d9dd6d",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 73,
|
|
"name": "EmuDecky",
|
|
"version": "1.0.2-1",
|
|
"sha256": "ff19cac1cab713e7f56bd5b850d5986cef4f2f9933303432e9c66de19868a3ce",
|
|
"tags": [
|
|
"EmuDeck"
|
|
],
|
|
"folder": "EmuDecky",
|
|
"archiveBytes": 852322,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"debug",
|
|
"_root"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"EmuDecky/main.py",
|
|
"EmuDecky/py.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "EmuDecky/bin/hello",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogButton",
|
|
"Dropdown",
|
|
"Menu",
|
|
"MenuItem",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SteamSpinner",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"showContextMenu",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/EmuDeck/EmuDecky.git",
|
|
"https://github.com/SteamDeckHomebrew/decky-plugin-template"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: EmuDecky/bin/hello.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 73,
|
|
"name": "EmuDecky",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "rejection",
|
|
"message": "SyntaxError: Unexpected token 'R', \"Read-only \"... is not valid JSON"
|
|
}
|
|
],
|
|
"methods": [
|
|
"getSettings"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 73,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: EmuDecky/bin/hello"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"nativePort": "Published bin/hello is x86_64 even if unused; upstream must remove it or publish an ARM64 archive, plus remove root dependency.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 73,
|
|
"sha256": "ff19cac1cab713e7f56bd5b850d5986cef4f2f9933303432e9c66de19868a3ce",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: EmuDecky/bin/hello",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: EmuDecky/bin/hello."
|
|
}
|
|
},
|
|
{
|
|
"id": 74,
|
|
"name": "KDE Connect",
|
|
"version": "0.1.0-1",
|
|
"sha256": "5f7decb4de48290f8eec15937486c9611aec0d25256515c97f98cf7ba30c79a4",
|
|
"tags": [
|
|
"control"
|
|
],
|
|
"folder": "kdeconnect",
|
|
"archiveBytes": 5981,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"debug"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"kdeconnect/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/safijari/Decky-KDE-Connect"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; KDE Connect installation/pairing/file transfers unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 74,
|
|
"name": "KDE Connect",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"is_enabled"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 74,
|
|
"accepted": true,
|
|
"folder": "kdeconnect"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 74,
|
|
"sha256": "5f7decb4de48290f8eec15937486c9611aec0d25256515c97f98cf7ba30c79a4",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 75,
|
|
"name": "Reshadeck",
|
|
"version": "0.2.0",
|
|
"sha256": "f7f79c3f5d12d92d14adfdebad62053d6e10982fb7b662b6777cb06945dc4281",
|
|
"tags": [
|
|
"control"
|
|
],
|
|
"folder": "reshadeck",
|
|
"archiveBytes": 25044,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"debug"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"reshadeck/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Input.RegisterForControllerStateChanges",
|
|
"System.RegisterForOnResumeFromSuspend",
|
|
"System.RegisterForOnSuspendRequest"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"Dropdown",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"definePlugin",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"gamescope"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/Matsilagi/RSRetroArch",
|
|
"https://github.com/safijari/reshadeck"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; ReShade deployment into Proton games is unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 75,
|
|
"name": "Reshadeck",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_shader_list",
|
|
"get_screensaver_list",
|
|
"get_current_shader",
|
|
"get_current_screensaver"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 75,
|
|
"accepted": true,
|
|
"folder": "reshadeck"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "gamescope",
|
|
"uiSurfaces": [
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 75,
|
|
"sha256": "f7f79c3f5d12d92d14adfdebad62053d6e10982fb7b662b6777cb06945dc4281",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 76,
|
|
"name": "CheatDeck",
|
|
"version": "1.1.6",
|
|
"sha256": "6dfe1f821b0cfe2a61c95e49efd6cb2587d79ff3d1e101e14fa80c12c7f6d89f",
|
|
"tags": [
|
|
"cheat",
|
|
"trainer"
|
|
],
|
|
"folder": "CheatDeck",
|
|
"archiveBytes": 1402211,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"CheatDeck/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Apps.RegisterForAppDetails",
|
|
"Apps.SetAppLaunchOptions"
|
|
],
|
|
"dfl": [
|
|
"DialogBodyText",
|
|
"DialogButton",
|
|
"DialogHeader",
|
|
"Dropdown",
|
|
"Field",
|
|
"Focusable",
|
|
"MenuItem",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"SidebarNavigation",
|
|
"TextField",
|
|
"ToggleField",
|
|
"afterPatch",
|
|
"definePlugin",
|
|
"fakeRenderComponent",
|
|
"findInReactTree",
|
|
"findInTree",
|
|
"findModuleByExport",
|
|
"showModal",
|
|
"staticClasses",
|
|
"useParams"
|
|
],
|
|
"globals": [
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/DeckThemes/SDH-CssLoader",
|
|
"https://github.com/SheffeyG/CheatDeck",
|
|
"https://github.com/SheffeyG/CheatDeck.git",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/SteamGridDB/decky-steamgriddb",
|
|
"https://github.com/jurassicplayer/decky-autosuspend"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Frontend audit failed: Cannot convert undefined or null to object.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 76,
|
|
"name": "CheatDeck",
|
|
"ready": false,
|
|
"error": "Cannot convert undefined or null to object",
|
|
"logs": [],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 76,
|
|
"accepted": true,
|
|
"folder": "CheatDeck"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"Steam page patches/module lookup"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 76,
|
|
"sha256": "6dfe1f821b0cfe2a61c95e49efd6cb2587d79ff3d1e101e14fa80c12c7f6d89f",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 77,
|
|
"name": "BT Wake Control",
|
|
"version": "1.2.0",
|
|
"sha256": "baed8ba21589fec8cbeff6c31a83f010664ea3bbeac3d8e71d64e9a9f63fd346",
|
|
"tags": [
|
|
"bluetooth",
|
|
"utility",
|
|
"wake"
|
|
],
|
|
"folder": "decky-bluetooth-wake-control",
|
|
"archiveBytes": 14357,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-bluetooth-wake-control/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"IconsModule",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"/sys/devices/virtual/dmi/id/board_name",
|
|
"/sys/devices/virtual/dmi/id/board_vendor",
|
|
"bluetoothctl"
|
|
],
|
|
"sourceURLs": [],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; backend uses DMI board paths and Bluetooth wake permissions, unverified on ARM64 Frame.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 77,
|
|
"name": "BT Wake Control",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_status"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 77,
|
|
"accepted": true,
|
|
"folder": "decky-bluetooth-wake-control"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "/sys/devices/virtual/dmi/id/board_name; /sys/devices/virtual/dmi/id/board_vendor; bluetoothctl",
|
|
"uiSurfaces": [
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 77,
|
|
"sha256": "baed8ba21589fec8cbeff6c31a83f010664ea3bbeac3d8e71d64e9a9f63fd346",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 78,
|
|
"name": "Brightness Bar",
|
|
"version": "1.0.4",
|
|
"sha256": "d7aaf6481a24c32c847aa1cd64cf23ba6fe73c5dc166587a2303494a42ae0486",
|
|
"tags": [
|
|
"brightness",
|
|
"display"
|
|
],
|
|
"folder": "decky-brightness-bar",
|
|
"archiveBytes": 20755,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"decky-brightness-bar/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"System.Display.RegisterForBrightnessChanges"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ColorPickerModal",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"SliderField",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"findModuleChild",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"routerHook",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/rasitayaz/decky-brightness-bar",
|
|
"https://github.com/rasitayaz/decky-brightness-bar.git"
|
|
],
|
|
"status": "na",
|
|
"reason": "Not supported on Frame: Targets Steam/QAM brightness shortcuts and a global Steam overlay; neither is attached to the Framey panel.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 78,
|
|
"name": "Brightness Bar",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"settings_load"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 78,
|
|
"accepted": true,
|
|
"folder": "decky-brightness-bar"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "Targets Steam/QAM brightness shortcuts and a global Steam overlay; neither is attached to the Framey panel.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 78,
|
|
"sha256": "d7aaf6481a24c32c847aa1cd64cf23ba6fe73c5dc166587a2303494a42ae0486",
|
|
"archiveValidation": "accepted",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Not supported on Frame: Targets Steam/QAM brightness shortcuts and a global Steam overlay; neither is attached to the Framey panel."
|
|
}
|
|
},
|
|
{
|
|
"id": 79,
|
|
"name": "Decky Notifications",
|
|
"version": "1.0.1",
|
|
"sha256": "3b22dc337209615f91da566ceb968793dc163b2e509de8535fb5d0fc55817312",
|
|
"tags": [
|
|
"KDE Connect",
|
|
"Notifications"
|
|
],
|
|
"folder": "decky-notifications",
|
|
"archiveBytes": 23222,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"decky-notifications/main.py",
|
|
"decky-notifications/py_modules/connector/const.py",
|
|
"decky-notifications/py_modules/connector/packet/base.py",
|
|
"decky-notifications/py_modules/connector/packet/registry.py",
|
|
"decky-notifications/py_modules/connector/packet/handler/ping.py",
|
|
"decky-notifications/py_modules/connector/packet/handler/notification.py",
|
|
"decky-notifications/py_modules/connector/packet/handler/__init__.py",
|
|
"decky-notifications/py_modules/connector/packet/handler/identity.py",
|
|
"decky-notifications/py_modules/connector/packet/handler/pair.py",
|
|
"decky-notifications/py_modules/connector/packet/__init__.py",
|
|
"decky-notifications/py_modules/connector/http.py",
|
|
"decky-notifications/py_modules/connector/context.py",
|
|
"decky-notifications/py_modules/connector/storage.py",
|
|
"decky-notifications/py_modules/connector/service.py",
|
|
"decky-notifications/py_modules/connector/crypto.py",
|
|
"decky-notifications/py_modules/connector/__init__.py",
|
|
"decky-notifications/py_modules/connector/packet_old.py",
|
|
"decky-notifications/py_modules/connector/__main__.py",
|
|
"decky-notifications/py_modules/connector/discovery.py",
|
|
"decky-notifications/py_modules/connector/queue.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"Menu",
|
|
"MenuItem",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"definePlugin",
|
|
"showContextMenu",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"DeckyPluginLoader",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/Firemoon777/decky-notifications",
|
|
"https://github.com/Firemoon777/decky-notifications.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; device/account setup and notification delivery unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 79,
|
|
"name": "Decky Notifications",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"device_list",
|
|
"notification_list",
|
|
"get_event"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 79,
|
|
"accepted": true,
|
|
"folder": "decky-notifications"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 79,
|
|
"sha256": "3b22dc337209615f91da566ceb968793dc163b2e509de8535fb5d0fc55817312",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 80,
|
|
"name": "MagicBlack",
|
|
"version": "2.0.2",
|
|
"sha256": "7177850f8a818783525430b9f2fc4b63f49b9e665a63df2bd8c0abb660d9baad",
|
|
"tags": [
|
|
"black",
|
|
"off",
|
|
"oled",
|
|
"overlay",
|
|
"screen",
|
|
"shortcut"
|
|
],
|
|
"folder": "MagicBlackDecky",
|
|
"archiveBytes": 143757,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"MagicBlackDecky/main.py",
|
|
"MagicBlackDecky/py_modules/mp/settings.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"System.Audio.GetDevices",
|
|
"System.Audio.SetDeviceVolume"
|
|
],
|
|
"dfl": [
|
|
"DialogButton",
|
|
"Field",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"SliderField",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"findModuleChild",
|
|
"findModuleExport",
|
|
"gamepadDialogClasses",
|
|
"joinClassNames",
|
|
"quickAccessMenuClasses",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"SteamUIStore",
|
|
"routerHook",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/steam3d/MagicBlackDecky",
|
|
"https://github.com/steam3d/MagicBlackDecky.git"
|
|
],
|
|
"status": "na",
|
|
"reason": "Not supported on Frame: Targets a global Steam Deck screen-black overlay; the isolated panel cannot black out the Frame compositor.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 80,
|
|
"name": "MagicBlack",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "[MagicBlack] Failed to load allow_touch setting Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[MagicBlack] Failed to load mute_mic setting Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[MagicBlack] Failed to load mute_sound setting Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[MagicBlack] Failed to load off_anykey setting Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[MagicBlack] Failed to load off_upon_waking setting Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[MagicBlack] Failed to load overlay_opacity number setting Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"load_setting"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 80,
|
|
"accepted": true,
|
|
"folder": "MagicBlackDecky"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "Targets a global Steam Deck screen-black overlay; the isolated panel cannot black out the Frame compositor.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 80,
|
|
"sha256": "7177850f8a818783525430b9f2fc4b63f49b9e665a63df2bd8c0abb660d9baad",
|
|
"archiveValidation": "accepted",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Not supported on Frame: Targets a global Steam Deck screen-black overlay; the isolated panel cannot black out the Frame compositor."
|
|
}
|
|
},
|
|
{
|
|
"id": 81,
|
|
"name": "IsThereAnyDeal for Deck",
|
|
"version": "1.1.1",
|
|
"sha256": "18e133b2e6203f16fd1ee2ed83b5a90bad34491515bef7ec1c82d525f0bfadef",
|
|
"tags": [
|
|
"GameDeals",
|
|
"IsThereAnyDeal"
|
|
],
|
|
"folder": "isthereanydeal-for-deck",
|
|
"archiveBytes": 38911,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"isthereanydeal-for-deck/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"User.GetIPCountry"
|
|
],
|
|
"dfl": [
|
|
"DialogButton",
|
|
"DropdownItem",
|
|
"Field",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"findModuleChild",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"routerHook",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/JtdeGraaf/IsThereAnyDeal-DeckyPlugin",
|
|
"https://github.com/JtdeGraaf/IsThereAnyDeal-DeckyPlugin.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Country settings render and select the real Frame Steam country through the read-only bridge. Settings writes, deal lookups and Steam page integration remain unverified; plugin backend calls were denied.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame",
|
|
"real Frame SSH"
|
|
],
|
|
"browser": {
|
|
"id": 81,
|
|
"name": "IsThereAnyDeal for Deck",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"settings_load",
|
|
"settings_save"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 81,
|
|
"accepted": true,
|
|
"folder": "isthereanydeal-for-deck"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 81,
|
|
"sha256": "18e133b2e6203f16fd1ee2ed83b5a90bad34491515bef7ec1c82d525f0bfadef",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 82,
|
|
"name": "MagicPods",
|
|
"version": "2.0.21",
|
|
"sha256": "abe2eef5788cb3ff6e73fcb9783e30a54b127e28c761a9bf99e64ab5fc4be9ab",
|
|
"tags": [
|
|
"airpods",
|
|
"battery",
|
|
"beats",
|
|
"bluetooth",
|
|
"headphones"
|
|
],
|
|
"folder": "MagicPodsDecky",
|
|
"archiveBytes": 885293,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"MagicPodsDecky/main.py",
|
|
"MagicPodsDecky/py_modules/mp/extcore.py",
|
|
"MagicPodsDecky/py_modules/mp/core.py",
|
|
"MagicPodsDecky/py_modules/mp/settings.py",
|
|
"MagicPodsDecky/py_modules/mp/player.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "MagicPodsDecky/bin/magicpodscore",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [
|
|
"Input.RegisterForControllerStateChanges",
|
|
"System.Audio.GetDevices",
|
|
"System.Audio.RegisterForDeviceVolumeChanged",
|
|
"System.Audio.SetDeviceVolume",
|
|
"System.Bluetooth",
|
|
"System.Bluetooth.RegisterForStateChanges",
|
|
"System.Bluetooth.SetEnabled"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogButton",
|
|
"Field",
|
|
"Focusable",
|
|
"Menu",
|
|
"MenuItem",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SliderField",
|
|
"Tabs",
|
|
"ToggleField",
|
|
"afterPatch",
|
|
"definePlugin",
|
|
"findClassModule",
|
|
"findModuleChild",
|
|
"findModuleDetailsByExport",
|
|
"findSP",
|
|
"gamepadDialogClasses",
|
|
"gamepadSliderClasses",
|
|
"getGamepadNavigationTrees",
|
|
"joinClassNames",
|
|
"quickAccessMenuClasses",
|
|
"showContextMenu",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/steam3d/MagicPodsDecky",
|
|
"https://github.com/steam3d/MagicPodsDecky.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: MagicPodsDecky/bin/magicpodscore. Frontend audit failed: Audit blocks WebSocket.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 82,
|
|
"name": "MagicPods",
|
|
"ready": false,
|
|
"error": "Audit blocks WebSocket",
|
|
"logs": [],
|
|
"methods": [
|
|
"load_setting",
|
|
"logger_react"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 82,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: MagicPodsDecky/bin/magicpodscore"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"nativePort": "magicpodscore requires an upstream ARM64 artifact/source and protocol tests; frontend uses a direct websocket.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 82,
|
|
"sha256": "abe2eef5788cb3ff6e73fcb9783e30a54b127e28c761a9bf99e64ab5fc4be9ab",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: MagicPodsDecky/bin/magicpodscore",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: MagicPodsDecky/bin/magicpodscore. Frontend audit failed: Audit blocks WebSocket."
|
|
}
|
|
},
|
|
{
|
|
"id": 84,
|
|
"name": "Junk-Store",
|
|
"version": "1.1.13",
|
|
"sha256": "f7ad2a0103c85bf308929b2e96ec9aeeb0d76bcc6ae97eb1e4b5f31ffba0cbb1",
|
|
"tags": [
|
|
"88mph",
|
|
"Epic",
|
|
"Launcher"
|
|
],
|
|
"folder": "Junk-Store",
|
|
"archiveBytes": 134003,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"Junk-Store/main.py",
|
|
"Junk-Store/scripts/epic-config.py",
|
|
"Junk-Store/scripts/get-json.py",
|
|
"Junk-Store/scripts/fetch_rss.py",
|
|
"Junk-Store/scripts/shared/GameSet.py",
|
|
"Junk-Store/scripts/shared/GamesDb.py",
|
|
"Junk-Store/scripts/epic.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Apps.AddShortcut",
|
|
"Apps.GetAvailableCompatTools",
|
|
"Apps.RemoveShortcut",
|
|
"Apps.RunGame",
|
|
"Apps.SetAppLaunchOptions",
|
|
"Apps.SetCustomArtworkForApp",
|
|
"Apps.SetShortcutExe",
|
|
"Apps.SetShortcutLaunchOptions",
|
|
"Apps.SetShortcutName",
|
|
"Apps.SetShortcutStartDir",
|
|
"Apps.SpecifyCompatTool",
|
|
"GameSessions.RegisterForAppLifetimeNotifications",
|
|
"Input.RegisterForControllerInputMessages",
|
|
"Installs.OpenInstallWizard"
|
|
],
|
|
"dfl": [
|
|
"Button",
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogBody",
|
|
"DialogButton",
|
|
"DialogControlsSection",
|
|
"DialogLabel",
|
|
"Dropdown",
|
|
"Field",
|
|
"Focusable",
|
|
"GamepadButton",
|
|
"Marquee",
|
|
"Menu",
|
|
"MenuItem",
|
|
"ModalPosition",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ProgressBar",
|
|
"ScrollPanelGroup",
|
|
"SidebarNavigation",
|
|
"SliderField",
|
|
"Spinner",
|
|
"SteamSpinner",
|
|
"Tabs",
|
|
"TextField",
|
|
"ToggleField",
|
|
"afterPatch",
|
|
"definePlugin",
|
|
"findClassModule",
|
|
"gamepadDialogClasses",
|
|
"gamepadTabbedPageClasses",
|
|
"joinClassNames",
|
|
"quickAccessControlsClasses",
|
|
"quickAccessMenuClasses",
|
|
"scrollPanelClasses",
|
|
"showContextMenu",
|
|
"showModal",
|
|
"sleep",
|
|
"staticClasses",
|
|
"useParams"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"SteamUIStore",
|
|
"appDetailsStore",
|
|
"appStore",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"sudo"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/ebenbruyns/junkstore",
|
|
"https://github.com/ebenbruyns/junkstore.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Official Decky 3.3.0 ARM64 static menu/backend calls pass; local Chromium Games/Epic navigation, About/Dependencies tabs, Back and reopen render with real Frame library metadata. Legendary is absent; dependency install, login, game operations, RSS, optional websocket and worn VR remain unverified. Existing installs need update/reinstall for script permissions.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame",
|
|
"isolated Linux backend",
|
|
"real Frame SSH"
|
|
],
|
|
"browser": {
|
|
"id": 84,
|
|
"name": "Junk-Store",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"fetch_rss_feed",
|
|
"execute_action"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 84,
|
|
"accepted": true,
|
|
"folder": "Junk-Store"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "sudo",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 84,
|
|
"sha256": "f7ad2a0103c85bf308929b2e96ec9aeeb0d76bcc6ae97eb1e4b5f31ffba0cbb1",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"localBackend": {
|
|
"runtime": "Decky 3.3.0 amd64",
|
|
"evidence": "docs/evidence/framey-script-entrypoints-2026-10-26.json",
|
|
"before": "init and InitActions return inner Type:Error",
|
|
"after": "init Type:Success; InitActions Type:ActionSet/MainMenu"
|
|
},
|
|
"realFrame": {
|
|
"runtime": "Decky 3.3.0 ARM64",
|
|
"evidence": "docs/evidence/framey-script-entrypoints-2026-10-26.json",
|
|
"staticActions": [
|
|
"JunkStoreActions/GetContent",
|
|
"JunkStoreActions/GetEpicActions",
|
|
"MainMenu/GetContent",
|
|
"MainMenu/JunkStoreInit",
|
|
"init/InitActions"
|
|
],
|
|
"browser": "main menu; Games/Epic static tab; back; close/reopen",
|
|
"installedContext": {
|
|
"evidence": "docs/evidence/framey-installed-context-2026-10-26.json",
|
|
"field": "local_per_client_data.installed",
|
|
"browser": "About/Dependencies, Back, close/reopen; real library projection; static ARM64 backend calls",
|
|
"installedUnknown": "preserved as undefined; no fabricated false"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": 85,
|
|
"name": "Decky-Undervolt",
|
|
"version": "1.0.8",
|
|
"sha256": "2df6f8095acf2c6c71724dbbce8ebd34180880a3411f1a236b5b2143863dbc42",
|
|
"tags": [
|
|
"battery-saving",
|
|
"curve optimizer",
|
|
"performance",
|
|
"root",
|
|
"ryzenadj",
|
|
"temperature",
|
|
"undervolt"
|
|
],
|
|
"folder": "Decky-Undervolt",
|
|
"archiveBytes": 575970,
|
|
"api": 1,
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"Decky-Undervolt/main.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "Decky-Undervolt/bin/libryzenadj.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Undervolt/bin/ryzenadj",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [
|
|
"GameSessions.RegisterForAppLifetimeNotifications",
|
|
"System.RegisterForOnResumeFromSuspend"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogButton",
|
|
"DropdownItem",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SidebarNavigation",
|
|
"SliderField",
|
|
"TextField",
|
|
"ToggleField",
|
|
"definePlugin"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"appStore",
|
|
"routerHook",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"ryzenadj",
|
|
"sudo"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/FlyGoat/RyzenAdj",
|
|
"https://github.com/totallynotbakadestroyer/Decky-Undervolt"
|
|
],
|
|
"status": "na",
|
|
"reason": "Not supported on Frame: RyzenAdj Curve Optimizer requires an AMD CPU; Frame is ARM64.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 85,
|
|
"name": "Decky-Undervolt",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"init"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 85,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: Decky-Undervolt/bin/libryzenadj.so"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "RyzenAdj Curve Optimizer requires an AMD CPU; Frame is ARM64.",
|
|
"nativePort": "RyzenAdj is AMD-specific and cannot be ported to control the Frame SoC.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 85,
|
|
"sha256": "2df6f8095acf2c6c71724dbbce8ebd34180880a3411f1a236b5b2143863dbc42",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: Decky-Undervolt/bin/libryzenadj.so",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 87,
|
|
"name": "ScreenSaver",
|
|
"version": "1.1.2",
|
|
"sha256": "5e61f20d53e244c55a0375d6299b16cdb9701c222519c7fecd726f1926091822",
|
|
"tags": [
|
|
"dbus",
|
|
"screensaver"
|
|
],
|
|
"folder": "DeckyInhibitScreenSaver",
|
|
"archiveBytes": 143762,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"DeckyInhibitScreenSaver/main.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/glib/message_bus.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/glib/proxy_object.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/glib/__init__.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/_private/unmarshaller.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/_private/util.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/_private/constants.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/_private/marshaller.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/_private/address.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/_private/__init__.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/signature.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/auth.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/introspection.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/aio/message_bus.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/aio/proxy_object.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/aio/__init__.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/constants.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/message_bus.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/service.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/__version__.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/message.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/validators.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/proxy_object.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/__init__.py",
|
|
"DeckyInhibitScreenSaver/dbus_next/errors.py",
|
|
"DeckyInhibitScreenSaver/lib/x/etree/cElementTree.py",
|
|
"DeckyInhibitScreenSaver/lib/x/etree/ElementInclude.py",
|
|
"DeckyInhibitScreenSaver/lib/x/etree/ElementTree.py",
|
|
"DeckyInhibitScreenSaver/lib/x/etree/__init__.py",
|
|
"DeckyInhibitScreenSaver/lib/x/etree/ElementPath.py",
|
|
"DeckyInhibitScreenSaver/lib/x/parsers/expat.py",
|
|
"DeckyInhibitScreenSaver/lib/x/parsers/__init__.py",
|
|
"DeckyInhibitScreenSaver/lib/x/sax/xmlreader.py",
|
|
"DeckyInhibitScreenSaver/lib/x/sax/handler.py",
|
|
"DeckyInhibitScreenSaver/lib/x/sax/_exceptions.py",
|
|
"DeckyInhibitScreenSaver/lib/x/sax/expatreader.py",
|
|
"DeckyInhibitScreenSaver/lib/x/sax/saxutils.py",
|
|
"DeckyInhibitScreenSaver/lib/x/sax/__init__.py",
|
|
"DeckyInhibitScreenSaver/lib/x/__init__.py",
|
|
"DeckyInhibitScreenSaver/lib/x/dom/expatbuilder.py",
|
|
"DeckyInhibitScreenSaver/lib/x/dom/domreg.py",
|
|
"DeckyInhibitScreenSaver/lib/x/dom/NodeFilter.py",
|
|
"DeckyInhibitScreenSaver/lib/x/dom/minicompat.py",
|
|
"DeckyInhibitScreenSaver/lib/x/dom/pulldom.py",
|
|
"DeckyInhibitScreenSaver/lib/x/dom/minidom.py",
|
|
"DeckyInhibitScreenSaver/lib/x/dom/xmlbuilder.py",
|
|
"DeckyInhibitScreenSaver/lib/x/dom/__init__.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Input.RegisterForControllerInputMessages",
|
|
"Input.RegisterForControllerStateChanges",
|
|
"Settings.SetSetting",
|
|
"System.RegisterForOnSuspendRequest",
|
|
"System.UpdateSettings",
|
|
"User.RegisterForPrepareForSystemSuspendProgress"
|
|
],
|
|
"dfl": [
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"findModuleChild",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/Guldoman/mpv_inhibit_gnome",
|
|
"https://github.com/altdesktop/python-dbus-next",
|
|
"https://github.com/xfangfang/DeckyInhibitScreenSaver",
|
|
"https://github.com/xfangfang/DeckyInhibitScreenSaver.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; global screen overlay and idle/suspend integration have no verified VR target.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 87,
|
|
"name": "ScreenSaver",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_settings",
|
|
"get_event"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 87,
|
|
"accepted": true,
|
|
"folder": "DeckyInhibitScreenSaver"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"toasts",
|
|
"Steam page patches/module lookup"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 87,
|
|
"sha256": "5e61f20d53e244c55a0375d6299b16cdb9701c222519c7fecd726f1926091822",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 88,
|
|
"name": "steamdeck-input-disabler",
|
|
"version": "1.0.2",
|
|
"sha256": "321426191c123a354d66d5db57dc2a42eb7f3516bab24a294516b606baf94703",
|
|
"tags": [
|
|
"bluetooth",
|
|
"controller",
|
|
"fix",
|
|
"root",
|
|
"utility"
|
|
],
|
|
"folder": "steamdeck-input-disabler",
|
|
"archiveBytes": 13580,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"steamdeck-input-disabler/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"/sys/bus/usb/drivers/usbhid/bind",
|
|
"bluetoothctl"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/scawp/Steam-Deck.Auto-Disable-Steam-Controller"
|
|
],
|
|
"status": "na",
|
|
"reason": "Not supported on Frame: Targets the built-in Steam Deck USB gamepad; Frame has different controllers.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 88,
|
|
"name": "steamdeck-input-disabler",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 88,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "Targets the built-in Steam Deck USB gamepad; Frame has different controllers.",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 88,
|
|
"sha256": "321426191c123a354d66d5db57dc2a42eb7f3516bab24a294516b606baf94703",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 89,
|
|
"name": "DeckySpy",
|
|
"version": "0.6.7",
|
|
"sha256": "2d431a89826ed5cf3fd37258373eb3b46c841c39795aa8b25f83e59f4eee87c7",
|
|
"tags": [
|
|
"utility"
|
|
],
|
|
"folder": "decky-spy",
|
|
"archiveBytes": 108997,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"decky-spy/main.py",
|
|
"decky-spy/py_modules/click/shell_completion.py",
|
|
"decky-spy/py_modules/click/utils.py",
|
|
"decky-spy/py_modules/click/formatting.py",
|
|
"decky-spy/py_modules/click/_textwrap.py",
|
|
"decky-spy/py_modules/click/exceptions.py",
|
|
"decky-spy/py_modules/click/__init__.py",
|
|
"decky-spy/py_modules/click/core.py",
|
|
"decky-spy/py_modules/click/_termui_impl.py",
|
|
"decky-spy/py_modules/click/globals.py",
|
|
"decky-spy/py_modules/click/types.py",
|
|
"decky-spy/py_modules/click/_winconsole.py",
|
|
"decky-spy/py_modules/click/_compat.py",
|
|
"decky-spy/py_modules/click/termui.py",
|
|
"decky-spy/py_modules/click/testing.py",
|
|
"decky-spy/py_modules/click/parser.py",
|
|
"decky-spy/py_modules/click/decorators.py",
|
|
"decky-spy/py_modules/__init__.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"System.RegisterForOnResumeFromSuspend"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"Field",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SliderField",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/Seraphli/decky-spy",
|
|
"https://github.com/Seraphli/decky-spy.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; account tokens and external service integration were not exercised.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 89,
|
|
"name": "DeckySpy",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"log",
|
|
"get_token",
|
|
"log_err",
|
|
"check_token"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 89,
|
|
"accepted": true,
|
|
"folder": "decky-spy"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 89,
|
|
"sha256": "2d431a89826ed5cf3fd37258373eb3b46c841c39795aa8b25f83e59f4eee87c7",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"runningFollowUp": {
|
|
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
|
|
"mode": "synthetic nonempty running/library replay; backend and network denied",
|
|
"frontendReady": true
|
|
}
|
|
},
|
|
{
|
|
"id": 90,
|
|
"name": "Picture in Picture",
|
|
"version": "1.0.0",
|
|
"sha256": "e0115148305cd216e50bcfec8851fe3d1c6f3d36ae2f92113c199fc1bb2388e3",
|
|
"tags": [
|
|
"movies",
|
|
"pip",
|
|
"tv",
|
|
"video",
|
|
"web"
|
|
],
|
|
"folder": "decky-pip",
|
|
"archiveBytes": 513088,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DropdownItem",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SliderField",
|
|
"TextField",
|
|
"ToggleField",
|
|
"findModuleChild",
|
|
"getGamepadNavigationTrees",
|
|
"quickAccessMenuClasses",
|
|
"showModal"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/rossimo/decky-pip",
|
|
"https://github.com/rossimo/decky-pip.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; global picture-in-picture injection cannot escape the isolated panel.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 90,
|
|
"name": "Picture in Picture",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 90,
|
|
"accepted": true,
|
|
"folder": "decky-pip"
|
|
},
|
|
"backend": "no Python/native backend found",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 90,
|
|
"sha256": "e0115148305cd216e50bcfec8851fe3d1c6f3d36ae2f92113c199fc1bb2388e3",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 91,
|
|
"name": "PlayCount",
|
|
"version": "1.7",
|
|
"sha256": "d53d0b406d275312e9b6b586815b622c77a6657dfb75256441ba82337c4039b6",
|
|
"tags": [
|
|
"Currently Playing",
|
|
"Player Count",
|
|
"Steam Charts",
|
|
"SteamDB"
|
|
],
|
|
"folder": "playcount-decky",
|
|
"archiveBytes": 1052294,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"Button",
|
|
"ButtonItem",
|
|
"DialogBody",
|
|
"DialogButton",
|
|
"DialogControlsSection",
|
|
"DialogHeader",
|
|
"DropdownItem",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"SliderField",
|
|
"Tabs",
|
|
"ToggleField",
|
|
"afterPatch",
|
|
"appDetailsClasses",
|
|
"createReactTreePatcher",
|
|
"definePlugin",
|
|
"findInReactTree",
|
|
"findModuleChild",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"routerHook",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/itsOwen/playcount-decky",
|
|
"https://github.com/itsOwen/playcount-decky.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; Steam game-page play-count patch has no supported VR target.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 91,
|
|
"name": "PlayCount",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 91,
|
|
"accepted": true,
|
|
"folder": "playcount-decky"
|
|
},
|
|
"backend": "no Python/native backend found",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 91,
|
|
"sha256": "d53d0b406d275312e9b6b586815b622c77a6657dfb75256441ba82337c4039b6",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 92,
|
|
"name": "Crosshair",
|
|
"version": "1.1.0",
|
|
"sha256": "19544af369622dac243874de99bc30485d1d8a27241fb05ca299b2d1dd39b2e0",
|
|
"tags": [
|
|
"aim",
|
|
"crosshair",
|
|
"HUD",
|
|
"overlay"
|
|
],
|
|
"folder": "Crosshair",
|
|
"archiveBytes": 444165,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"Crosshair/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/xXJSONDeruloXx/precision-crosshair-hud",
|
|
"https://github.com/xXJSONDeruloXx/precision-crosshair-hud.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; global crosshair injection has no supported compositor target.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 92,
|
|
"name": "Crosshair",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_current_offsets"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 92,
|
|
"accepted": true,
|
|
"folder": "Crosshair"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"QAM/global tabs"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 92,
|
|
"sha256": "19544af369622dac243874de99bc30485d1d8a27241fb05ca299b2d1dd39b2e0",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 93,
|
|
"name": "Deck Settings",
|
|
"version": "1.2.6",
|
|
"sha256": "23c2a933a6883e2622f0184c33a76ce4a4e88c0a7dcd730f9bab71b8c3702132",
|
|
"tags": [
|
|
"config",
|
|
"deckverified",
|
|
"game",
|
|
"settings",
|
|
"setup",
|
|
"verified"
|
|
],
|
|
"folder": "decky-game-settings",
|
|
"archiveBytes": 3307297,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-game-settings/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"InstallFolder.GetInstallFolders",
|
|
"System.GetSystemInfo"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogBody",
|
|
"DialogButton",
|
|
"Dropdown",
|
|
"Field",
|
|
"Focusable",
|
|
"GamepadButton",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"ScrollPanelGroup",
|
|
"SliderField",
|
|
"Spinner",
|
|
"TextField",
|
|
"ToggleField",
|
|
"gamepadDialogClasses",
|
|
"scrollPanelClasses",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"collectionStore",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"/sys/class/dmi/id/sys_vendor",
|
|
"/sys/class/dmi/id/sys_vendor,"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/DeckSettings/decky-game-settings",
|
|
"https://github.com/DeckSettings/decky-game-settings.git",
|
|
"https://github.com/DeckSettings/game-reports-steamos",
|
|
"https://github.com/SteamDeckHomebrew/decky-frontend-lib"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Game picker renders with detached real Frame library/install-folder reads; search modal opens in local Chromium. Snapshot refreshes on panel reopen. Remote reports/proxy fetch, settings changes and ARM64 backend remain unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame",
|
|
"real Frame SSH"
|
|
],
|
|
"browser": {
|
|
"id": 93,
|
|
"name": "Deck Settings",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "[decky-game-settings:AuthorFooter] Error fetching avatar image: Error: Decky proxy fetch is unavailable in Framey"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[decky-game-settings:GameSelectView] Error fetching installed games: TypeError: Cannot read properties of undefined (reading 'allGamesCollection')"
|
|
}
|
|
],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 93,
|
|
"accepted": true,
|
|
"folder": "decky-game-settings"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "/sys/class/dmi/id/sys_vendor; /sys/class/dmi/id/sys_vendor,",
|
|
"uiSurfaces": [
|
|
"toasts",
|
|
"QAM/global tabs",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 93,
|
|
"sha256": "23c2a933a6883e2622f0184c33a76ce4a4e88c0a7dcd730f9bab71b8c3702132",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"libraryFollowUp": {
|
|
"evidence": "docs/evidence/framey-library-context-2026-10-26.json",
|
|
"mode": "real Frame read-only CEF projection; local Chromium snapshot replay; scoped actual amd64 backends",
|
|
"frontendReady": true
|
|
},
|
|
"runningFollowUp": {
|
|
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
|
|
"mode": "synthetic nonempty running/library replay; backend and network denied",
|
|
"frontendReady": true
|
|
}
|
|
},
|
|
{
|
|
"id": 94,
|
|
"name": "Decky DoT DNS",
|
|
"version": "0.0.2",
|
|
"sha256": "0e9ffd3ccc07b12f64541129189fe84184efb9242373d01fbc90395f4d6bfbbc",
|
|
"tags": [
|
|
"dns",
|
|
"networking",
|
|
"root"
|
|
],
|
|
"folder": "decky-dot-dns",
|
|
"archiveBytes": 454756,
|
|
"api": 1,
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-dot-dns/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"Dropdown",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"TextField",
|
|
"ToggleField",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"systemctl"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/ohaiibuzzle/decky-dot-dns",
|
|
"https://github.com/ohaiibuzzle/decky-dot-dns.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 94,
|
|
"name": "Decky DoT DNS",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_presets",
|
|
"get_dns_settings"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 94,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "systemctl",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 94,
|
|
"sha256": "0e9ffd3ccc07b12f64541129189fe84184efb9242373d01fbc90395f4d6bfbbc",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 95,
|
|
"name": "Decky-SpoofDPI",
|
|
"version": "0.12.0",
|
|
"sha256": "e37d613ffab3096517aeafd176ab04d86e9c97ea42d32b9eacd6ba1d2bf873ab",
|
|
"tags": [
|
|
"deep-packet-inspection",
|
|
"networking",
|
|
"spoofdpi"
|
|
],
|
|
"folder": "decky-spoof-dpi",
|
|
"archiveBytes": 3426995,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-spoof-dpi/main.py",
|
|
"decky-spoof-dpi/py_modules/spoofdpi_control.py",
|
|
"decky-spoof-dpi/py_modules/config_file.py",
|
|
"decky-spoof-dpi/py_modules/constants.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "decky-spoof-dpi/bin/spoofdpi",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [
|
|
"User.StartRestart"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"TextField",
|
|
"ToggleField",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-plugin-template.git",
|
|
"https://github.com/ohaiibuzzle/decky-spoof-dpi",
|
|
"https://github.com/xvzc/SpoofDPI"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: decky-spoof-dpi/bin/spoofdpi.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 95,
|
|
"name": "Decky-SpoofDPI",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"getStatus",
|
|
"getSettings"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 95,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: decky-spoof-dpi/bin/spoofdpi"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"nativePort": "SpoofDPI is a separate upstream helper; needs an ARM64 artifact/protocol and network-permission validation.",
|
|
"uiSurfaces": [
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 95,
|
|
"sha256": "e37d613ffab3096517aeafd176ab04d86e9c97ea42d32b9eacd6ba1d2bf873ab",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: decky-spoof-dpi/bin/spoofdpi",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: decky-spoof-dpi/bin/spoofdpi."
|
|
}
|
|
},
|
|
{
|
|
"id": 96,
|
|
"name": "Simple Timer",
|
|
"version": "1.0.0",
|
|
"sha256": "973d927e9d9a1feec04679c564af7e389a729b6735d2a988ffc2cb46ce4eb312",
|
|
"tags": [
|
|
"alarm",
|
|
"decktools",
|
|
"timer"
|
|
],
|
|
"folder": "simple-timer",
|
|
"archiveBytes": 490890,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"simple-timer/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"Button",
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"Focusable",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ToggleField",
|
|
"findModuleChild",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/decktools-xyz/simple-timer",
|
|
"https://github.com/decktools-xyz/simple-timer.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Live start/cancel, countdown events, completion toast, persisted recents/subtle mode verified in Chromium with real ARM64 Decky. Upstream expired-timer restart raises missing timer_task. Audio/suspend unsupported; alerts require an open panel; worn VR unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame",
|
|
"real Frame SSH"
|
|
],
|
|
"browser": {
|
|
"id": 96,
|
|
"name": "Simple Timer",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"load_recents",
|
|
"load_remaining_seconds",
|
|
"load_subtle_mode"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 96,
|
|
"accepted": true,
|
|
"folder": "simple-timer"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"toasts",
|
|
"Steam page patches/module lookup"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 96,
|
|
"sha256": "973d927e9d9a1feec04679c564af7e389a729b6735d2a988ffc2cb46ce4eb312",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"realFrame": {
|
|
"evidence": "docs/evidence/framey-events-backend-2026-10-26.json",
|
|
"checks": {
|
|
"uiStart300Seconds": true,
|
|
"uiCancel": true,
|
|
"shortTimer5Seconds": true,
|
|
"completionToastVisible": true,
|
|
"recentTimersAndSubtleModeSurvivedRestart": true,
|
|
"subscriptionsAfterPanelClose": 0
|
|
},
|
|
"method": "local Chromium + real Frame SSH; private actual Decky 3.3.0 ARM64 service"
|
|
}
|
|
},
|
|
{
|
|
"id": 97,
|
|
"name": "Decky-Framegen",
|
|
"version": "0.11.15",
|
|
"sha256": "14015d5a652c78b2041fd9668685573840530c306e414aabc0d3cebf95be0642",
|
|
"tags": [
|
|
"DLSS",
|
|
"Framegen",
|
|
"FSR",
|
|
"upscaling"
|
|
],
|
|
"folder": "Decky-Framegen",
|
|
"archiveBytes": 75140408,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"Decky-Framegen/main.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "Decky-Framegen/bin/nvngx.dll",
|
|
"arch": "Windows"
|
|
},
|
|
{
|
|
"file": "Decky-Framegen/bin/dlssg_to_fsr3_amd_is_better.dll",
|
|
"arch": "Windows"
|
|
},
|
|
{
|
|
"file": "Decky-Framegen/bin/nvapi64.dll",
|
|
"arch": "Windows"
|
|
}
|
|
],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"showModal"
|
|
],
|
|
"globals": [
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/Nukem9/dlssg-to-fsr3",
|
|
"https://github.com/artur-graniszewski/DLSS-Enabler",
|
|
"https://github.com/optiscaler/OptiScaler",
|
|
"https://github.com/xXJSONDeruloXx/Decky-Framegen",
|
|
"https://github.com/xXJSONDeruloXx/Decky-Framegen.git",
|
|
"https://github.com/xXJSONDeruloXx/OptiScaler-Bleeding-Edge"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Plugin archive size or SHA-256 did not match the store.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 97,
|
|
"name": "Decky-Framegen",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"check_fgmod_path",
|
|
"log_error"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 97,
|
|
"accepted": false,
|
|
"reason": "Plugin archive size or SHA-256 did not match the store"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"nativePort": "Windows DLL payload targets x86 game translation rather than a native ARM backend; archive is 75,140,408 bytes, beyond the 50 MiB installer limit.",
|
|
"uiSurfaces": [
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 97,
|
|
"sha256": "14015d5a652c78b2041fd9668685573840530c306e414aabc0d3cebf95be0642",
|
|
"archiveValidation": "Plugin archive size or SHA-256 did not match the store",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Plugin archive size or SHA-256 did not match the store."
|
|
}
|
|
},
|
|
{
|
|
"id": 98,
|
|
"name": "Decky-Lookup",
|
|
"version": "0.1.0",
|
|
"sha256": "49309a02fa028d26c77230cc9f70fec9bcce91d59e887bfe8f9d3e42f8a19139",
|
|
"tags": [
|
|
"browser",
|
|
"Lookup",
|
|
"search",
|
|
"website"
|
|
],
|
|
"folder": "Decky-Lookup",
|
|
"archiveBytes": 441922,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/SteamDeckHomebrew/decky-plugin-template",
|
|
"https://github.com/xXJSONDeruloXx/Decky-Lookup",
|
|
"https://github.com/xXJSONDeruloXx/Decky-Lookup.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; game-page context actions and live lookups remain unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 98,
|
|
"name": "Decky-Lookup",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 98,
|
|
"accepted": true,
|
|
"folder": "Decky-Lookup"
|
|
},
|
|
"backend": "no Python/native backend found",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 98,
|
|
"sha256": "49309a02fa028d26c77230cc9f70fec9bcce91d59e887bfe8f9d3e42f8a19139",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"runningFollowUp": {
|
|
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
|
|
"mode": "synthetic nonempty running/library replay; backend and network denied",
|
|
"frontendReady": true
|
|
}
|
|
},
|
|
{
|
|
"id": 99,
|
|
"name": "Decky Zerotier",
|
|
"version": "0.3.1",
|
|
"sha256": "4cacfcf96b11b423af41ec57cea915e26a0dac42fc03432dad1fcded135781a2",
|
|
"tags": [
|
|
"network",
|
|
"zerotier"
|
|
],
|
|
"folder": "decky-zerotier",
|
|
"archiveBytes": 507353,
|
|
"api": 1,
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-zerotier/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ConfirmModal",
|
|
"DialogBody",
|
|
"DialogButton",
|
|
"DialogSubHeader",
|
|
"Field",
|
|
"Focusable",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"TextField",
|
|
"ToggleField",
|
|
"showModal"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/hyacz/deck-zerotier",
|
|
"https://github.com/hyacz/deck-zerotier.git",
|
|
"https://github.com/hyacz/decky-zerotier",
|
|
"https://github.com/zerotier/DesktopUI",
|
|
"https://github.com/zerotier/ZeroTierOne"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 99,
|
|
"name": "Decky Zerotier",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"info",
|
|
"list_networks"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 99,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 99,
|
|
"sha256": "4cacfcf96b11b423af41ec57cea915e26a0dac42fc03432dad1fcded135781a2",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service."
|
|
}
|
|
},
|
|
{
|
|
"id": 100,
|
|
"name": "Virtual Surround Sound",
|
|
"version": "0.0.5",
|
|
"sha256": "b6c514d147cc46bad5331ca9da36628eb9c330976e13735687499a4a9f17f6d4",
|
|
"tags": [
|
|
"5.1",
|
|
"7.1",
|
|
"atmos",
|
|
"audio",
|
|
"binaural",
|
|
"dolby",
|
|
"dts",
|
|
"headphones",
|
|
"surround"
|
|
],
|
|
"folder": "decky-virtual-surround-sound",
|
|
"archiveBytes": 4309855,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-virtual-surround-sound/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ConfirmModal",
|
|
"DialogButton",
|
|
"Dropdown",
|
|
"Field",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SliderField",
|
|
"ToggleField",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"pactl"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/DeckSettings/decky-virtual-surround-sound",
|
|
"https://github.com/DeckSettings/decky-virtual-surround-sound.git",
|
|
"https://github.com/SteamDeckHomebrew/decky-frontend-lib"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; avatar proxy is unavailable and live audio-routing backend unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 100,
|
|
"name": "Virtual Surround Sound",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Error fetching avatar image: Error: Decky proxy fetch is unavailable in Framey"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[decky-virtual-surround-sound:AudioControlsView] Error fetching app details: Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_sink_inputs"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 100,
|
|
"accepted": true,
|
|
"folder": "decky-virtual-surround-sound"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "pactl",
|
|
"uiSurfaces": [
|
|
"QAM/global tabs"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 100,
|
|
"sha256": "b6c514d147cc46bad5331ca9da36628eb9c330976e13735687499a4a9f17f6d4",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"runningFollowUp": {
|
|
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
|
|
"mode": "synthetic nonempty running/library replay; backend and network denied",
|
|
"frontendReady": true
|
|
}
|
|
},
|
|
{
|
|
"id": 101,
|
|
"name": "XIVOmega",
|
|
"version": "1.0.2",
|
|
"sha256": "d2638cd2943eabd2c449234855acc91e92990826cae8516dbb6a624f99b57c81",
|
|
"tags": [
|
|
"final-fantasy-xiv",
|
|
"root",
|
|
"XivAlexander",
|
|
"XivMitmLatencyMitigator",
|
|
"XivOmega"
|
|
],
|
|
"folder": "XIVOmega",
|
|
"archiveBytes": 5523733,
|
|
"api": 1,
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"XIVOmega/main.py",
|
|
"XIVOmega/py_modules/scapy/dadict.py",
|
|
"XIVOmega/py_modules/scapy/base_classes.py",
|
|
"XIVOmega/py_modules/scapy/route.py",
|
|
"XIVOmega/py_modules/scapy/__main__.py",
|
|
"XIVOmega/py_modules/scapy/themes.py",
|
|
"XIVOmega/py_modules/scapy/scapypipes.py",
|
|
"XIVOmega/py_modules/scapy/asn1fields.py",
|
|
"XIVOmega/py_modules/scapy/consts.py",
|
|
"XIVOmega/py_modules/scapy/error.py",
|
|
"XIVOmega/py_modules/scapy/interfaces.py",
|
|
"XIVOmega/py_modules/scapy/tools/check_asdis.py",
|
|
"XIVOmega/py_modules/scapy/tools/generate_ethertypes.py",
|
|
"XIVOmega/py_modules/scapy/tools/generate_manuf.py",
|
|
"XIVOmega/py_modules/scapy/tools/scapy_pyannotate.py",
|
|
"XIVOmega/py_modules/scapy/tools/automotive/obdscanner.py",
|
|
"XIVOmega/py_modules/scapy/tools/automotive/xcpscanner.py",
|
|
"XIVOmega/py_modules/scapy/tools/automotive/isotpscanner.py",
|
|
"XIVOmega/py_modules/scapy/tools/automotive/__init__.py",
|
|
"XIVOmega/py_modules/scapy/tools/UTscapy.py",
|
|
"XIVOmega/py_modules/scapy/tools/__init__.py",
|
|
"XIVOmega/py_modules/scapy/autorun.py",
|
|
"XIVOmega/py_modules/scapy/utils.py",
|
|
"XIVOmega/py_modules/scapy/all.py",
|
|
"XIVOmega/py_modules/scapy/as_resolvers.py",
|
|
"XIVOmega/py_modules/scapy/compat.py",
|
|
"XIVOmega/py_modules/scapy/contrib/macsec.py",
|
|
"XIVOmega/py_modules/scapy/contrib/eddystone.py",
|
|
"XIVOmega/py_modules/scapy/contrib/oam.py",
|
|
"XIVOmega/py_modules/scapy/contrib/mpls.py",
|
|
"XIVOmega/py_modules/scapy/contrib/ethercat.py",
|
|
"XIVOmega/py_modules/scapy/contrib/socks.py",
|
|
"XIVOmega/py_modules/scapy/contrib/vtp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/opc_da.py",
|
|
"XIVOmega/py_modules/scapy/contrib/pnio_dcp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/tcpao.py",
|
|
"XIVOmega/py_modules/scapy/contrib/diameter.py",
|
|
"XIVOmega/py_modules/scapy/contrib/openflow.py",
|
|
"XIVOmega/py_modules/scapy/contrib/isis.py",
|
|
"XIVOmega/py_modules/scapy/contrib/bier.py",
|
|
"XIVOmega/py_modules/scapy/contrib/loraphy2wan.py",
|
|
"XIVOmega/py_modules/scapy/contrib/isotp/isotp_utils.py",
|
|
"XIVOmega/py_modules/scapy/contrib/isotp/isotp_packet.py",
|
|
"XIVOmega/py_modules/scapy/contrib/isotp/isotp_soft_socket.py",
|
|
"XIVOmega/py_modules/scapy/contrib/isotp/isotp_scanner.py",
|
|
"XIVOmega/py_modules/scapy/contrib/isotp/isotp_native_socket.py",
|
|
"XIVOmega/py_modules/scapy/contrib/isotp/__init__.py",
|
|
"XIVOmega/py_modules/scapy/contrib/ife.py",
|
|
"XIVOmega/py_modules/scapy/contrib/wireguard.py",
|
|
"XIVOmega/py_modules/scapy/contrib/homeplugsg.py",
|
|
"XIVOmega/py_modules/scapy/contrib/sdnv.py",
|
|
"XIVOmega/py_modules/scapy/contrib/nrf_sniffer.py",
|
|
"XIVOmega/py_modules/scapy/contrib/rtcp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/enipTCP.py",
|
|
"XIVOmega/py_modules/scapy/contrib/gtp_v2.py",
|
|
"XIVOmega/py_modules/scapy/contrib/avs.py",
|
|
"XIVOmega/py_modules/scapy/contrib/pnio_rpc.py",
|
|
"XIVOmega/py_modules/scapy/contrib/nsh.py",
|
|
"XIVOmega/py_modules/scapy/contrib/chdlc.py",
|
|
"XIVOmega/py_modules/scapy/contrib/ltp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/rtsp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/slowprot.py",
|
|
"XIVOmega/py_modules/scapy/contrib/cansocket_python_can.py",
|
|
"XIVOmega/py_modules/scapy/contrib/bfd.py",
|
|
"XIVOmega/py_modules/scapy/contrib/exposure_notification.py",
|
|
"XIVOmega/py_modules/scapy/contrib/ibeacon.py",
|
|
"XIVOmega/py_modules/scapy/contrib/cansocket.py",
|
|
"XIVOmega/py_modules/scapy/contrib/icmp_extensions.py",
|
|
"XIVOmega/py_modules/scapy/contrib/stamp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/ldp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/mqtt.py",
|
|
"XIVOmega/py_modules/scapy/contrib/gxrp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/http2.py",
|
|
"XIVOmega/py_modules/scapy/contrib/ppi_cace.py",
|
|
"XIVOmega/py_modules/scapy/contrib/dtp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/altbeacon.py",
|
|
"XIVOmega/py_modules/scapy/contrib/mac_control.py",
|
|
"XIVOmega/py_modules/scapy/contrib/ikev2.py",
|
|
"XIVOmega/py_modules/scapy/contrib/gtp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/knx.py",
|
|
"XIVOmega/py_modules/scapy/contrib/erspan.py",
|
|
"XIVOmega/py_modules/scapy/contrib/lacp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/homepluggp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/lldp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/stun.py",
|
|
"XIVOmega/py_modules/scapy/contrib/bp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/etherip.py",
|
|
"XIVOmega/py_modules/scapy/contrib/send.py",
|
|
"XIVOmega/py_modules/scapy/contrib/ppi_geotag.py",
|
|
"XIVOmega/py_modules/scapy/contrib/pfcp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/uds_scan.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/doip.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/uds.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/ccp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/someip.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/scanner/staged_test_case.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/scanner/test_case.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/scanner/configuration.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/scanner/enumerator.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/scanner/graph.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/scanner/executor.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/scanner/__init__.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/uds_ecu_states.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/bmw/definitions.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/bmw/hsfz.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/bmw/enumerator.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/bmw/__init__.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/gm/gmlan_scanner.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/gm/gmlanutils.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/gm/gmlan.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/gm/gmlan_logging.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/gm/gmlan_ecu_states.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/gm/__init__.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/autosar/secoc_pdu.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/autosar/secoc.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/autosar/pdu.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/autosar/secoc_canfd.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/autosar/__init__.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/ecu.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/obd/iid/iids.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/obd/iid/__init__.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/obd/tid/tids.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/obd/tid/__init__.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/obd/packet.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/obd/scanner.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/obd/mid/mids.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/obd/mid/__init__.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/obd/obd.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/obd/services.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/obd/pid/pids_20_3F.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/obd/pid/pids.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/obd/pid/pids_60_7F.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/obd/pid/pids_00_1F.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/obd/pid/pids_80_9F.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/obd/pid/pids_40_5F.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/obd/pid/pids_A0_C0.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/obd/pid/__init__.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/obd/__init__.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/volkswagen/definitions.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/volkswagen/__init__.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/kwp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/uds_logging.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/xcp/utils.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/xcp/cto_commands_slave.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/xcp/scanner.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/xcp/cto_commands_master.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/xcp/xcp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/xcp/__init__.py",
|
|
"XIVOmega/py_modules/scapy/contrib/automotive/__init__.py",
|
|
"XIVOmega/py_modules/scapy/contrib/nfs.py",
|
|
"XIVOmega/py_modules/scapy/contrib/igmp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/concox.py",
|
|
"XIVOmega/py_modules/scapy/contrib/esmc.py",
|
|
"XIVOmega/py_modules/scapy/contrib/homeplugav.py",
|
|
"XIVOmega/py_modules/scapy/contrib/pnio.py",
|
|
"XIVOmega/py_modules/scapy/contrib/hicp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/rpl.py",
|
|
"XIVOmega/py_modules/scapy/contrib/pim.py",
|
|
"XIVOmega/py_modules/scapy/contrib/geneve.py",
|
|
"XIVOmega/py_modules/scapy/contrib/vqp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/mount.py",
|
|
"XIVOmega/py_modules/scapy/contrib/ospf.py",
|
|
"XIVOmega/py_modules/scapy/contrib/rtr.py",
|
|
"XIVOmega/py_modules/scapy/contrib/scada/pcom.py",
|
|
"XIVOmega/py_modules/scapy/contrib/scada/iec104/iec104_fields.py",
|
|
"XIVOmega/py_modules/scapy/contrib/scada/iec104/iec104_information_elements.py",
|
|
"XIVOmega/py_modules/scapy/contrib/scada/iec104/iec104_information_objects.py",
|
|
"XIVOmega/py_modules/scapy/contrib/scada/iec104/__init__.py",
|
|
"XIVOmega/py_modules/scapy/contrib/scada/__init__.py",
|
|
"XIVOmega/py_modules/scapy/contrib/mqttsn.py",
|
|
"XIVOmega/py_modules/scapy/contrib/eigrp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/tacacs.py",
|
|
"XIVOmega/py_modules/scapy/contrib/modbus.py",
|
|
"XIVOmega/py_modules/scapy/contrib/ripng.py",
|
|
"XIVOmega/py_modules/scapy/contrib/sebek.py",
|
|
"XIVOmega/py_modules/scapy/contrib/rsvp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/rtps/pid_types.py",
|
|
"XIVOmega/py_modules/scapy/contrib/rtps/rtps.py",
|
|
"XIVOmega/py_modules/scapy/contrib/rtps/common_types.py",
|
|
"XIVOmega/py_modules/scapy/contrib/rtps/__init__.py",
|
|
"XIVOmega/py_modules/scapy/contrib/metawatch.py",
|
|
"XIVOmega/py_modules/scapy/contrib/roce.py",
|
|
"XIVOmega/py_modules/scapy/contrib/cdp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/tzsp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/tcpros.py",
|
|
"XIVOmega/py_modules/scapy/contrib/cansocket_native.py",
|
|
"XIVOmega/py_modules/scapy/contrib/coap.py",
|
|
"XIVOmega/py_modules/scapy/contrib/igmpv3.py",
|
|
"XIVOmega/py_modules/scapy/contrib/bgp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/nlm.py",
|
|
"XIVOmega/py_modules/scapy/contrib/openflow3.py",
|
|
"XIVOmega/py_modules/scapy/contrib/skinny.py",
|
|
"XIVOmega/py_modules/scapy/contrib/carp.py",
|
|
"XIVOmega/py_modules/scapy/contrib/postgres.py",
|
|
"XIVOmega/py_modules/scapy/contrib/rpl_metrics.py",
|
|
"XIVOmega/py_modules/scapy/contrib/__init__.py",
|
|
"XIVOmega/py_modules/scapy/contrib/aoe.py",
|
|
"XIVOmega/py_modules/scapy/contrib/portmap.py",
|
|
"XIVOmega/py_modules/scapy/contrib/oncrpc.py",
|
|
"XIVOmega/py_modules/scapy/utils6.py",
|
|
"XIVOmega/py_modules/scapy/route6.py",
|
|
"XIVOmega/py_modules/scapy/asn1packet.py",
|
|
"XIVOmega/py_modules/scapy/supersocket.py",
|
|
"XIVOmega/py_modules/scapy/pipetool.py",
|
|
"XIVOmega/py_modules/scapy/ansmachine.py",
|
|
"XIVOmega/py_modules/scapy/fields.py",
|
|
"XIVOmega/py_modules/scapy/plist.py",
|
|
"XIVOmega/py_modules/scapy/data.py",
|
|
"XIVOmega/py_modules/scapy/packet.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/automaton_srv.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/record_sslv2.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/keyexchange.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/extensions.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/crypto/md4.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/crypto/cipher_stream.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/crypto/suites.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/crypto/hkdf.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/crypto/h_mac.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/crypto/common.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/crypto/pkcs1.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/crypto/all.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/crypto/cipher_block.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/crypto/ciphers.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/crypto/prf.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/crypto/cipher_aead.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/crypto/kx_algs.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/crypto/compression.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/crypto/hash.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/crypto/groups.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/crypto/__init__.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/handshake.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/all.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/tools.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/automaton_cli.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/keyexchange_tls13.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/record_tls13.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/handshake_sslv2.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/basefields.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/session.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/automaton.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/cert.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/record.py",
|
|
"XIVOmega/py_modules/scapy/layers/tls/__init__.py",
|
|
"XIVOmega/py_modules/scapy/layers/dhcp.py",
|
|
"XIVOmega/py_modules/scapy/layers/usb.py",
|
|
"XIVOmega/py_modules/scapy/layers/can.py",
|
|
"XIVOmega/py_modules/scapy/layers/spnego.py",
|
|
"XIVOmega/py_modules/scapy/layers/mobileip.py",
|
|
"XIVOmega/py_modules/scapy/layers/inet.py",
|
|
"XIVOmega/py_modules/scapy/layers/vrrp.py",
|
|
"XIVOmega/py_modules/scapy/layers/dot15d4.py",
|
|
"XIVOmega/py_modules/scapy/layers/dns.py",
|
|
"XIVOmega/py_modules/scapy/layers/llmnr.py",
|
|
"XIVOmega/py_modules/scapy/layers/lltd.py",
|
|
"XIVOmega/py_modules/scapy/layers/gssapi.py",
|
|
"XIVOmega/py_modules/scapy/layers/rip.py",
|
|
"XIVOmega/py_modules/scapy/layers/x509.py",
|
|
"XIVOmega/py_modules/scapy/layers/ssh.py",
|
|
"XIVOmega/py_modules/scapy/layers/radius.py",
|
|
"XIVOmega/py_modules/scapy/layers/clns.py",
|
|
"XIVOmega/py_modules/scapy/layers/tftp.py",
|
|
"XIVOmega/py_modules/scapy/layers/smbclient.py",
|
|
"XIVOmega/py_modules/scapy/layers/ntp.py",
|
|
"XIVOmega/py_modules/scapy/layers/dhcp6.py",
|
|
"XIVOmega/py_modules/scapy/layers/all.py",
|
|
"XIVOmega/py_modules/scapy/layers/bluetooth.py",
|
|
"XIVOmega/py_modules/scapy/layers/pptp.py",
|
|
"XIVOmega/py_modules/scapy/layers/snmp.py",
|
|
"XIVOmega/py_modules/scapy/layers/ppp.py",
|
|
"XIVOmega/py_modules/scapy/layers/ntlm.py",
|
|
"XIVOmega/py_modules/scapy/layers/gprs.py",
|
|
"XIVOmega/py_modules/scapy/layers/ipsec.py",
|
|
"XIVOmega/py_modules/scapy/layers/sctp.py",
|
|
"XIVOmega/py_modules/scapy/layers/dcerpc.py",
|
|
"XIVOmega/py_modules/scapy/layers/ldap.py",
|
|
"XIVOmega/py_modules/scapy/layers/pflog.py",
|
|
"XIVOmega/py_modules/scapy/layers/l2.py",
|
|
"XIVOmega/py_modules/scapy/layers/zigbee.py",
|
|
"XIVOmega/py_modules/scapy/layers/netbios.py",
|
|
"XIVOmega/py_modules/scapy/layers/http.py",
|
|
"XIVOmega/py_modules/scapy/layers/isakmp.py",
|
|
"XIVOmega/py_modules/scapy/layers/msrpce/msdrsr.py",
|
|
"XIVOmega/py_modules/scapy/layers/msrpce/rpcclient.py",
|
|
"XIVOmega/py_modules/scapy/layers/msrpce/all.py",
|
|
"XIVOmega/py_modules/scapy/layers/msrpce/ept.py",
|
|
"XIVOmega/py_modules/scapy/layers/msrpce/raw/ms_samr.py",
|
|
"XIVOmega/py_modules/scapy/layers/msrpce/raw/ms_dcom.py",
|
|
"XIVOmega/py_modules/scapy/layers/msrpce/raw/ept.py",
|
|
"XIVOmega/py_modules/scapy/layers/msrpce/raw/ms_drsr.py",
|
|
"XIVOmega/py_modules/scapy/layers/msrpce/raw/ms_wkst.py",
|
|
"XIVOmega/py_modules/scapy/layers/msrpce/raw/ms_nrpc.py",
|
|
"XIVOmega/py_modules/scapy/layers/msrpce/raw/__init__.py",
|
|
"XIVOmega/py_modules/scapy/layers/msrpce/raw/ms_srvs.py",
|
|
"XIVOmega/py_modules/scapy/layers/msrpce/msnrpc.py",
|
|
"XIVOmega/py_modules/scapy/layers/msrpce/msdcom.py",
|
|
"XIVOmega/py_modules/scapy/layers/msrpce/mspac.py",
|
|
"XIVOmega/py_modules/scapy/layers/msrpce/rpcserver.py",
|
|
"XIVOmega/py_modules/scapy/layers/msrpce/__init__.py",
|
|
"XIVOmega/py_modules/scapy/layers/ir.py",
|
|
"XIVOmega/py_modules/scapy/layers/dot11.py",
|
|
"XIVOmega/py_modules/scapy/layers/bluetooth4LE.py",
|
|
"XIVOmega/py_modules/scapy/layers/rtp.py",
|
|
"XIVOmega/py_modules/scapy/layers/hsrp.py",
|
|
"XIVOmega/py_modules/scapy/layers/kerberos.py",
|
|
"XIVOmega/py_modules/scapy/layers/netflow.py",
|
|
"XIVOmega/py_modules/scapy/layers/tuntap.py",
|
|
"XIVOmega/py_modules/scapy/layers/inet6.py",
|
|
"XIVOmega/py_modules/scapy/layers/mgcp.py",
|
|
"XIVOmega/py_modules/scapy/layers/eap.py",
|
|
"XIVOmega/py_modules/scapy/layers/smbserver.py",
|
|
"XIVOmega/py_modules/scapy/layers/smb2.py",
|
|
"XIVOmega/py_modules/scapy/layers/vxlan.py",
|
|
"XIVOmega/py_modules/scapy/layers/smb.py",
|
|
"XIVOmega/py_modules/scapy/layers/ppi.py",
|
|
"XIVOmega/py_modules/scapy/layers/sixlowpan.py",
|
|
"XIVOmega/py_modules/scapy/layers/skinny.py",
|
|
"XIVOmega/py_modules/scapy/layers/l2tp.py",
|
|
"XIVOmega/py_modules/scapy/layers/__init__.py",
|
|
"XIVOmega/py_modules/scapy/sendrecv.py",
|
|
"XIVOmega/py_modules/scapy/modules/voip.py",
|
|
"XIVOmega/py_modules/scapy/modules/ticketer.py",
|
|
"XIVOmega/py_modules/scapy/modules/p0fv2.py",
|
|
"XIVOmega/py_modules/scapy/modules/krack/crypto.py",
|
|
"XIVOmega/py_modules/scapy/modules/krack/automaton.py",
|
|
"XIVOmega/py_modules/scapy/modules/krack/__init__.py",
|
|
"XIVOmega/py_modules/scapy/modules/nmap.py",
|
|
"XIVOmega/py_modules/scapy/modules/p0f.py",
|
|
"XIVOmega/py_modules/scapy/modules/__init__.py",
|
|
"XIVOmega/py_modules/scapy/volatile.py",
|
|
"XIVOmega/py_modules/scapy/asn1/ber.py",
|
|
"XIVOmega/py_modules/scapy/asn1/asn1.py",
|
|
"XIVOmega/py_modules/scapy/asn1/mib.py",
|
|
"XIVOmega/py_modules/scapy/asn1/__init__.py",
|
|
"XIVOmega/py_modules/scapy/libs/extcap.py",
|
|
"XIVOmega/py_modules/scapy/libs/rfc3961.py",
|
|
"XIVOmega/py_modules/scapy/libs/manuf.py",
|
|
"XIVOmega/py_modules/scapy/libs/test_pyx.py",
|
|
"XIVOmega/py_modules/scapy/libs/structures.py",
|
|
"XIVOmega/py_modules/scapy/libs/winpcapy.py",
|
|
"XIVOmega/py_modules/scapy/libs/ethertypes.py",
|
|
"XIVOmega/py_modules/scapy/libs/matplot.py",
|
|
"XIVOmega/py_modules/scapy/libs/__init__.py",
|
|
"XIVOmega/py_modules/scapy/automaton.py",
|
|
"XIVOmega/py_modules/scapy/sessions.py",
|
|
"XIVOmega/py_modules/scapy/main.py",
|
|
"XIVOmega/py_modules/scapy/arch/libpcap.py",
|
|
"XIVOmega/py_modules/scapy/arch/solaris.py",
|
|
"XIVOmega/py_modules/scapy/arch/bpf/pfroute.py",
|
|
"XIVOmega/py_modules/scapy/arch/bpf/consts.py",
|
|
"XIVOmega/py_modules/scapy/arch/bpf/core.py",
|
|
"XIVOmega/py_modules/scapy/arch/bpf/supersocket.py",
|
|
"XIVOmega/py_modules/scapy/arch/bpf/__init__.py",
|
|
"XIVOmega/py_modules/scapy/arch/windows/structures.py",
|
|
"XIVOmega/py_modules/scapy/arch/windows/native.py",
|
|
"XIVOmega/py_modules/scapy/arch/windows/__init__.py",
|
|
"XIVOmega/py_modules/scapy/arch/common.py",
|
|
"XIVOmega/py_modules/scapy/arch/unix.py",
|
|
"XIVOmega/py_modules/scapy/arch/linux/rtnetlink.py",
|
|
"XIVOmega/py_modules/scapy/arch/linux/__init__.py",
|
|
"XIVOmega/py_modules/scapy/arch/__init__.py",
|
|
"XIVOmega/py_modules/scapy/__init__.py",
|
|
"XIVOmega/py_modules/scapy/config.py",
|
|
"XIVOmega/py_modules/scapy/pton_ntop.py",
|
|
"XIVOmega/py_modules/lib/omegaWorker.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"Menu",
|
|
"MenuItem",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SidebarNavigation",
|
|
"Spinner",
|
|
"TextField",
|
|
"ToggleField",
|
|
"showContextMenu",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"/sys/net/ethertypes.h",
|
|
"/sys/net/if_pflog.h",
|
|
"/sys/net/pfvar.h",
|
|
"/sys/socket.h.auto.html",
|
|
"/sys/sys/socket.h",
|
|
"sudo",
|
|
"x86_64"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/AltBeacon/spec",
|
|
"https://github.com/BruceSherwood/vpython-jupyter",
|
|
"https://github.com/SecureAuthCorp/impacket",
|
|
"https://github.com/Soreepeong/XivMitmLatencyMitigator",
|
|
"https://github.com/adafruit/Adafruit_BLESniffer_Python",
|
|
"https://github.com/bankjaneo/XivMitmDocker",
|
|
"https://github.com/boundary/wireshark",
|
|
"https://github.com/cyrusimap/cyrus-sasl",
|
|
"https://github.com/freebsd/freebsd",
|
|
"https://github.com/google/eddystone",
|
|
"https://github.com/greatscottgadgets/libbtbb",
|
|
"https://github.com/hartkopp/can-isotp",
|
|
"https://github.com/krb5/krb5",
|
|
"https://github.com/mhorowitz/pykrb5",
|
|
"https://github.com/nmap/nmap",
|
|
"https://github.com/openbsd/src",
|
|
"https://github.com/pyca/cryptography",
|
|
"https://github.com/python/cpython",
|
|
"https://github.com/qca/open-plc-utils",
|
|
"https://github.com/ruuvi/ruuvi-sensor-protocols"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 101,
|
|
"name": "XIVOmega",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"curr_status"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 101,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "/sys/net/ethertypes.h; /sys/net/if_pflog.h; /sys/net/pfvar.h; /sys/socket.h.auto.html; /sys/sys/socket.h; sudo; x86_64",
|
|
"uiSurfaces": [
|
|
"local/Steam routes"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 101,
|
|
"sha256": "d2638cd2943eabd2c449234855acc91e92990826cae8516dbb6a624f99b57c81",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 102,
|
|
"name": "DeckSP",
|
|
"version": "1.1.3",
|
|
"sha256": "d6cbedcd64430e1f94a2b12caf936ba270f1ceafe77c6252808ff39c88640b40",
|
|
"tags": [
|
|
"audio",
|
|
"compressor",
|
|
"dsp",
|
|
"effects",
|
|
"eq",
|
|
"equalizer",
|
|
"fx",
|
|
"reverb",
|
|
"sound"
|
|
],
|
|
"folder": "DeckSP",
|
|
"archiveBytes": 4469375,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"DeckSP/main.py",
|
|
"DeckSP/py_modules/utils.py",
|
|
"DeckSP/py_modules/EelParser.py",
|
|
"DeckSP/py_modules/ddc.py",
|
|
"DeckSP/py_modules/env.py",
|
|
"DeckSP/py_modules/jdspproxy.py",
|
|
"DeckSP/py_modules/extendedsettings.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Input.ControllerKeyboardSetKeyState",
|
|
"System",
|
|
"System.Audio.GetDevices",
|
|
"System.Audio.RegisterForDeviceAdded",
|
|
"UI.RegisterForUIModeChanged",
|
|
"User.RegisterForShutdownStart"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogButton",
|
|
"Dropdown",
|
|
"DropdownItem",
|
|
"EUIMode",
|
|
"Field",
|
|
"Focusable",
|
|
"GamepadButton",
|
|
"Marquee",
|
|
"Menu",
|
|
"MenuGroup",
|
|
"MenuItem",
|
|
"ModalPosition",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ScrollPanelGroup",
|
|
"SimpleModal",
|
|
"SliderField",
|
|
"TextField",
|
|
"ToggleField",
|
|
"findModuleExport",
|
|
"gamepadContextMenuClasses",
|
|
"gamepadDialogClasses",
|
|
"quickAccessControlsClasses",
|
|
"quickAccessMenuClasses",
|
|
"scrollPanelClasses",
|
|
"showContextMenu",
|
|
"showModal",
|
|
"sleep"
|
|
],
|
|
"globals": [
|
|
"SteamUIStore",
|
|
"appStore",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"flatpak",
|
|
"systemctl"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/Audio4Linux/JDSP4Linux",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/james34602/JamesDSPManager",
|
|
"https://github.com/jessebofill/DeckSP",
|
|
"https://github.com/jessebofill/DeckSP.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Optional UI-audio lookup succeeds, but the published frontend raises \"Cannot access PluginManager before initialization\" when Steam MobX reaction lookup is unavailable. JamesDSP installation/audio routing and ARM64 remain unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 102,
|
|
"name": "DeckSP",
|
|
"ready": false,
|
|
"error": "Cannot access 'PluginManager' before initialization",
|
|
"logs": [],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 102,
|
|
"accepted": true,
|
|
"folder": "DeckSP"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "flatpak; systemctl",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 102,
|
|
"sha256": "d6cbedcd64430e1f94a2b12caf936ba270f1ceafe77c6252808ff39c88640b40",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 103,
|
|
"name": "Decky Ludusavi",
|
|
"version": "1.2.2",
|
|
"sha256": "8a69f45aadce763406b5c27bfef194761006d5e01c5e8841badeb13a27dd0d88",
|
|
"tags": [
|
|
"backup",
|
|
"cloud",
|
|
"ludusavi",
|
|
"sync"
|
|
],
|
|
"folder": "decky-ludusavi",
|
|
"archiveBytes": 1137863,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-ludusavi/main.py",
|
|
"decky-ludusavi/py_modules/ludusavi.py",
|
|
"decky-ludusavi/py_modules/config.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Apps.GetLaunchOptionsForApp",
|
|
"GameSessions.RegisterForAppLifetimeNotifications"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogButton",
|
|
"Dropdown",
|
|
"Focusable",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"TextField",
|
|
"ToggleField",
|
|
"showModal"
|
|
],
|
|
"globals": [
|
|
"appStore",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"flatpak"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/GedasFX/decky-cloud-save",
|
|
"https://github.com/GedasFX/decky-ludusavi",
|
|
"https://github.com/GedasFX/decky-ludusavi.git",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/mtkennerly/ludusavi"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; Flatpak Ludusavi discovery and backup/restore unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 103,
|
|
"name": "Decky Ludusavi",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_config",
|
|
"get_ludusavi_version"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 103,
|
|
"accepted": true,
|
|
"folder": "decky-ludusavi"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "flatpak",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 103,
|
|
"sha256": "8a69f45aadce763406b5c27bfef194761006d5e01c5e8841badeb13a27dd0d88",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"runningFollowUp": {
|
|
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
|
|
"mode": "synthetic nonempty running/library replay; backend and network denied",
|
|
"frontendReady": true
|
|
}
|
|
},
|
|
{
|
|
"id": 104,
|
|
"name": "Game Sync",
|
|
"version": "1.0.4",
|
|
"sha256": "65e021ebb37d2ebfbfbe3dbc8af95aef9556cf484730362c6b26c4ecc3e62ccd",
|
|
"tags": [
|
|
"backup",
|
|
"cloud",
|
|
"rclone"
|
|
],
|
|
"folder": "SDH-GameSync",
|
|
"archiveBytes": 2228806,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"SDH-GameSync/main.py",
|
|
"SDH-GameSync/py_modules/config.py",
|
|
"SDH-GameSync/py_modules/common_defs.py",
|
|
"SDH-GameSync/py_modules/utils.py",
|
|
"SDH-GameSync/py_modules/sync_target.py",
|
|
"SDH-GameSync/py_modules/rclone_manager.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"GameSessions.RegisterForAppLifetimeNotifications",
|
|
"GameSessions.RegisterForScreenshotNotification",
|
|
"Screenshots.DeleteLocalScreenshot"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogButton",
|
|
"Field",
|
|
"Focusable",
|
|
"Menu",
|
|
"MenuItem",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ReorderableList",
|
|
"SidebarNavigation",
|
|
"TextField",
|
|
"ToggleField",
|
|
"afterPatch",
|
|
"fakeRenderComponent",
|
|
"findInReactTree",
|
|
"findInTree",
|
|
"findModuleByExport",
|
|
"showContextMenu",
|
|
"showModal",
|
|
"sleep",
|
|
"useParams"
|
|
],
|
|
"globals": [
|
|
"appStore",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"amd64"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/AkazaRenn/SDH-GameSync",
|
|
"https://github.com/AkazaRenn/SDH-GameSync.git",
|
|
"https://github.com/GedasFX/decky-cloud-save"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Backend get_config is intentionally rejected by the audit before initialization completes; actual backend compatibility is unknown.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 104,
|
|
"name": "Game Sync",
|
|
"ready": false,
|
|
"error": "Read-only compatibility audit: backend method blocked",
|
|
"logs": [],
|
|
"methods": [
|
|
"get_config"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 104,
|
|
"accepted": true,
|
|
"folder": "SDH-GameSync"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "amd64",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 104,
|
|
"sha256": "65e021ebb37d2ebfbfbe3dbc8af95aef9556cf484730362c6b26c4ecc3e62ccd",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"runningFollowUp": {
|
|
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
|
|
"mode": "synthetic nonempty running/library replay; backend and network denied",
|
|
"frontendReady": false
|
|
}
|
|
},
|
|
{
|
|
"id": 105,
|
|
"name": "WiFi Locker",
|
|
"version": "1.0.2",
|
|
"sha256": "4d892785ea5ebdc61e0584eb6c2a594344efd3ce657bbd1f000ba54971a080b6",
|
|
"tags": [
|
|
"network",
|
|
"root",
|
|
"wifi"
|
|
],
|
|
"folder": "decky-wifi-locker",
|
|
"archiveBytes": 452083,
|
|
"api": 1,
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-wifi-locker/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"Field",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-frontend-lib",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/felipejfc/decky-wifi-locker",
|
|
"https://github.com/felipejfc/decky-wifi-locker.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 105,
|
|
"name": "WiFi Locker",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Error getting WiFi status: Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_wifi_status"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 105,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 105,
|
|
"sha256": "4d892785ea5ebdc61e0584eb6c2a594344efd3ce657bbd1f000ba54971a080b6",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 106,
|
|
"name": "LetMeReShade",
|
|
"version": "1.8",
|
|
"sha256": "ae9cf06bb59aa5694409503828d341ae635bde5429a77c766b7256156c1ccc4f",
|
|
"tags": [
|
|
"graphics",
|
|
"presets",
|
|
"reshade",
|
|
"shaders"
|
|
],
|
|
"folder": "LetMeReShade",
|
|
"archiveBytes": 229396,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"LetMeReShade/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Apps.SetAppLaunchOptions"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DropdownItem",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ToggleField",
|
|
"showModal"
|
|
],
|
|
"globals": [
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"/sys/devices/virtual/dmi/id/board_name",
|
|
"/sys/devices/virtual/dmi/id/product_name",
|
|
"/sys/devices/virtual/dmi/id/sys_vendor"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/itsOwen/LetMeReShade",
|
|
"https://github.com/itsOwen/LetMeReShade.git",
|
|
"https://github.com/itsOwen/LetMeReShade_Binaries"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; Deck-model assumptions, shader downloads and game modifications unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 106,
|
|
"name": "LetMeReShade",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Error fetching games: Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"check_reshade_path",
|
|
"detect_steam_deck_model",
|
|
"has_shader_preferences",
|
|
"load_autohdr_preference",
|
|
"load_installed_configuration",
|
|
"list_installed_games",
|
|
"find_heroic_games",
|
|
"log_error"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 106,
|
|
"accepted": true,
|
|
"folder": "LetMeReShade"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "/sys/devices/virtual/dmi/id/board_name; /sys/devices/virtual/dmi/id/product_name; /sys/devices/virtual/dmi/id/sys_vendor",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 106,
|
|
"sha256": "ae9cf06bb59aa5694409503828d341ae635bde5429a77c766b7256156c1ccc4f",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 107,
|
|
"name": "Decky Sunshine",
|
|
"version": "2025.10.27-dddf365",
|
|
"sha256": "335285d75df623492a04bb1955f6f802075623de985f426d9baaaf0b100ed437",
|
|
"tags": [
|
|
"moonlight",
|
|
"root",
|
|
"server",
|
|
"streaming",
|
|
"sunshine"
|
|
],
|
|
"folder": "decky-sunshine",
|
|
"archiveBytes": 18330,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"decky-sunshine/main.py",
|
|
"decky-sunshine/py_modules/sunshine.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogButton",
|
|
"DialogButtonPrimary",
|
|
"Field",
|
|
"ModalRoot",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Spinner",
|
|
"TextField",
|
|
"definePlugin",
|
|
"showModal"
|
|
],
|
|
"globals": [
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"flatpak"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/LizardByte/Sunshine",
|
|
"https://github.com/s0t7x/decky-sunshine"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 107,
|
|
"name": "Decky Sunshine",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "[SUN] Backend method isSunshineRunning failed Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[SUN] Backend method areCredentialsValid failed Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[SUN] Backend method getSunshineVersionInfo failed Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"isSunshineRunning",
|
|
"areCredentialsValid",
|
|
"getSunshineVersionInfo"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 107,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "flatpak",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 107,
|
|
"sha256": "335285d75df623492a04bb1955f6f802075623de985f426d9baaaf0b100ed437",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 108,
|
|
"name": "HueSync",
|
|
"version": "3.8.0",
|
|
"sha256": "96f8400be987d0a080e399eb108f773108eb662fe4875fcb95009dd265c1fb9c",
|
|
"tags": [
|
|
"root"
|
|
],
|
|
"folder": "HueSync",
|
|
"archiveBytes": 1083701,
|
|
"api": 1,
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"HueSync/main.py",
|
|
"HueSync/py_modules/huesync.py",
|
|
"HueSync/py_modules/serial/serialcli.py",
|
|
"HueSync/py_modules/serial/serialjava.py",
|
|
"HueSync/py_modules/serial/serialwin32.py",
|
|
"HueSync/py_modules/serial/__init__.py",
|
|
"HueSync/py_modules/serial/rs485.py",
|
|
"HueSync/py_modules/serial/threaded/__init__.py",
|
|
"HueSync/py_modules/serial/win32.py",
|
|
"HueSync/py_modules/serial/urlhandler/protocol_alt.py",
|
|
"HueSync/py_modules/serial/urlhandler/__init__.py",
|
|
"HueSync/py_modules/serial/urlhandler/protocol_spy.py",
|
|
"HueSync/py_modules/serial/urlhandler/protocol_rfc2217.py",
|
|
"HueSync/py_modules/serial/urlhandler/protocol_socket.py",
|
|
"HueSync/py_modules/serial/urlhandler/protocol_loop.py",
|
|
"HueSync/py_modules/serial/urlhandler/protocol_hwgrep.py",
|
|
"HueSync/py_modules/serial/urlhandler/protocol_cp2110.py",
|
|
"HueSync/py_modules/serial/serialutil.py",
|
|
"HueSync/py_modules/serial/rfc2217.py",
|
|
"HueSync/py_modules/serial/serialposix.py",
|
|
"HueSync/py_modules/serial/__main__.py",
|
|
"HueSync/py_modules/serial/tools/list_ports_posix.py",
|
|
"HueSync/py_modules/serial/tools/hexlify_codec.py",
|
|
"HueSync/py_modules/serial/tools/__init__.py",
|
|
"HueSync/py_modules/serial/tools/miniterm.py",
|
|
"HueSync/py_modules/serial/tools/list_ports_windows.py",
|
|
"HueSync/py_modules/serial/tools/list_ports_osx.py",
|
|
"HueSync/py_modules/serial/tools/list_ports.py",
|
|
"HueSync/py_modules/serial/tools/list_ports_linux.py",
|
|
"HueSync/py_modules/serial/tools/list_ports_common.py",
|
|
"HueSync/py_modules/devices/legion_power_led_mixin.py",
|
|
"HueSync/py_modules/devices/msi.py",
|
|
"HueSync/py_modules/devices/legion_go_tablet.py",
|
|
"HueSync/py_modules/devices/ayaneo.py",
|
|
"HueSync/py_modules/devices/led_device.py",
|
|
"HueSync/py_modules/devices/generic.py",
|
|
"HueSync/py_modules/devices/legion_go_s.py",
|
|
"HueSync/py_modules/devices/asus.py",
|
|
"HueSync/py_modules/devices/sysfs_led_mixin.py",
|
|
"HueSync/py_modules/devices/onexplayer_configs.py",
|
|
"HueSync/py_modules/devices/gpd.py",
|
|
"HueSync/py_modules/devices/onexplayer.py",
|
|
"HueSync/py_modules/devices/asus_ally.py",
|
|
"HueSync/py_modules/led/legion_led_device_hid.py",
|
|
"HueSync/py_modules/led/legion_go_tablet_hid.py",
|
|
"HueSync/py_modules/led/ayaneo_led_device_ec.py",
|
|
"HueSync/py_modules/led/onex_led_device_hid.py",
|
|
"HueSync/py_modules/led/asus_led_device_hid.py",
|
|
"HueSync/py_modules/led/onex_led_device_serial.py",
|
|
"HueSync/py_modules/led/hhd/oxp_hid_v2.py",
|
|
"HueSync/py_modules/led/hhd/hhd_asus_hid.py",
|
|
"HueSync/py_modules/led/hhd/hhd_legino_go_s_hid.py",
|
|
"HueSync/py_modules/led/hhd/hhd_hid_base.py",
|
|
"HueSync/py_modules/led/hhd/oxp_serial.py",
|
|
"HueSync/py_modules/led/hhd/oxp_hid_v1.py",
|
|
"HueSync/py_modules/led/msi_led_device_hid.py",
|
|
"HueSync/py_modules/utils.py",
|
|
"HueSync/py_modules/ec.py",
|
|
"HueSync/py_modules/logging_handler.py",
|
|
"HueSync/py_modules/config.py",
|
|
"HueSync/py_modules/power_led_backend.py",
|
|
"HueSync/py_modules/wincontrols/hardware.py",
|
|
"HueSync/py_modules/wincontrols/config.py",
|
|
"HueSync/py_modules/software_effects.py",
|
|
"HueSync/py_modules/custom_zone_animator.py",
|
|
"HueSync/py_modules/lib_hid/__init__.py",
|
|
"HueSync/py_modules/custom_rgb_manager.py",
|
|
"HueSync/py_modules/id_info.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "HueSync/bin/hello",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "HueSync/py_modules/portio.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [
|
|
"Settings.GetCurrentLanguage",
|
|
"System.GetSystemInfo",
|
|
"System.RegisterForBatteryStateChanges",
|
|
"System.RegisterForOnResumeFromSuspend",
|
|
"System.RegisterForOnSuspendRequest",
|
|
"User.RegisterForPrepareForSystemSuspendProgress",
|
|
"User.RegisterForResumeSuspendedGamesProgress"
|
|
],
|
|
"dfl": [
|
|
"DialogButton",
|
|
"DropdownItem",
|
|
"Field",
|
|
"Focusable",
|
|
"Marquee",
|
|
"ModalRoot",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SliderField",
|
|
"TextField",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"findModuleChild",
|
|
"gamepadSliderClasses",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"/dev/hidraw9",
|
|
"/sys/class/dmi/id/board_name",
|
|
"/sys/class/dmi/id/board_vendor",
|
|
"/sys/class/leds/",
|
|
"/sys/class/leds/ayaneo:rgb:joystick_rings",
|
|
"/sys/class/leds/ayn:rgb:joystick_rings",
|
|
"/sys/class/leds/multicolor:chassis",
|
|
"/sys/class/power_supply",
|
|
"/sys/class/tty/{}/device",
|
|
"/sys/devices/virtual/dmi/id/product_name",
|
|
"/sys/devices/virtual/dmi/id/sys_vendor",
|
|
"x86_64"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/Maccraft123/ayaled",
|
|
"https://github.com/ShadowBlip/ayaneo-platform",
|
|
"https://github.com/ShadowBlip/ayn-platform",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/Valkirie/HandheldCompanion",
|
|
"https://github.com/hhd-dev/hhd",
|
|
"https://github.com/hhd-dev/hwinfo",
|
|
"https://github.com/honjow/HueSync",
|
|
"https://github.com/honjow/HueSync.git",
|
|
"https://github.com/honjow/huesync",
|
|
"https://github.com/libusb/hidapi",
|
|
"https://github.com/makerbot/pyserial",
|
|
"https://github.com/pelrun/pyWinControls",
|
|
"https://github.com/pyserial/pyserial",
|
|
"https://github.com/trezor/cython-hidapi"
|
|
],
|
|
"status": "na",
|
|
"reason": "Not supported on Frame: Targets handheld RGB/LED controllers (AYANEO/Ally/MSI), not Frame hardware.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 108,
|
|
"name": "HueSync",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "warn",
|
|
"message": "[2026-10-25 23:26:59.143] WARN HueSync: ignoring empty suspend mode value"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[2026-10-25 23:26:59.145] ERROR Failed to init power LED control: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to load msi custom presets: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to load ayaneo custom presets: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to load rog_ally custom presets: Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_settings",
|
|
"log_info",
|
|
"log_warn",
|
|
"get_device_capabilities",
|
|
"get_custom_rgb_presets",
|
|
"log_error"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 108,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: HueSync/bin/hello"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "Targets handheld RGB/LED controllers (AYANEO/Ally/MSI), not Frame hardware.",
|
|
"nativePort": "portio and handheld LED backends depend on x86 I/O/unsupported hardware; ARM64 compilation alone is insufficient.",
|
|
"uiSurfaces": [
|
|
"toasts",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 108,
|
|
"sha256": "96f8400be987d0a080e399eb108f773108eb662fe4875fcb95009dd265c1fb9c",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: HueSync/bin/hello",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 109,
|
|
"name": "MuraDeck",
|
|
"version": "2.1.4",
|
|
"sha256": "7957de906e9b6721631fc0cd9a48e9524c1d7bb4371dfb183c391dfdf6d416d4",
|
|
"tags": [
|
|
"mura",
|
|
"mura-correction",
|
|
"mura-deck",
|
|
"muradeck",
|
|
"mura-fix",
|
|
"oled",
|
|
"samsung"
|
|
],
|
|
"folder": "MuraDeck",
|
|
"archiveBytes": 495598,
|
|
"api": 1,
|
|
"flags": [
|
|
"debug",
|
|
"_root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"MuraDeck/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"System.Display.RegisterForBrightnessChanges"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"Field",
|
|
"Focusable",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"SideMenu",
|
|
"SidebarNavigation",
|
|
"SliderField",
|
|
"ToggleField",
|
|
"quickAccessControlsClasses",
|
|
"showModal"
|
|
],
|
|
"globals": [
|
|
"SteamUIStore",
|
|
"routerHook",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"gamescope"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/Moonveil-Kanata/MuraDeck",
|
|
"https://github.com/ValveSoftware/gamescope",
|
|
"https://github.com/user-attachments/assets"
|
|
],
|
|
"status": "na",
|
|
"reason": "Not supported on Frame: Calibration is specifically for defective Samsung Steam Deck OLED panels, not Frame displays.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 109,
|
|
"name": "MuraDeck",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "[MuraDeck] Failed to register brightness listener TypeError: Cannot read properties of undefined (reading 'RegisterForBrightnessChanges')"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_has_seen_welcome",
|
|
"get_enabled",
|
|
"get_display_mode",
|
|
"is_external_display",
|
|
"get_ext_monitor_watcher",
|
|
"get_brightness_enabled",
|
|
"check_shader_status",
|
|
"get_sharpness",
|
|
"get_cas"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 109,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "Calibration is specifically for defective Samsung Steam Deck OLED panels, not Frame displays.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 109,
|
|
"sha256": "7957de906e9b6721631fc0cd9a48e9524c1d7bb4371dfb183c391dfdf6d416d4",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Not supported on Frame: Calibration is specifically for defective Samsung Steam Deck OLED panels, not Frame displays."
|
|
}
|
|
},
|
|
{
|
|
"id": 110,
|
|
"name": "Dimmer Deck",
|
|
"version": "0.0.4",
|
|
"sha256": "cb4d9091e0e28277c9e79625323f0898481cb5590d0a7ab58f4d80696225a4fc",
|
|
"tags": [
|
|
"brightness",
|
|
"utility"
|
|
],
|
|
"folder": "DimmerDeck",
|
|
"archiveBytes": 142050,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"DimmerDeck/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Settings.GetCurrentLanguage",
|
|
"System.Display.RegisterForBrightnessChanges",
|
|
"System.Display.SetBrightness"
|
|
],
|
|
"dfl": [
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"SliderField",
|
|
"ToggleField",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/ValveSoftware/gamescope",
|
|
"https://github.com/chenx-dust/DimmerDeck",
|
|
"https://github.com/chenx-dust/DimmerDeck.git"
|
|
],
|
|
"status": "na",
|
|
"reason": "Not supported on Frame: Changes gamescope/X11 dimming properties; no mapping to Frame VR display brightness exists.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 110,
|
|
"name": "Dimmer Deck",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"activate"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 110,
|
|
"accepted": true,
|
|
"folder": "DimmerDeck"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "Changes gamescope/X11 dimming properties; no mapping to Frame VR display brightness exists.",
|
|
"uiSurfaces": [
|
|
"toasts",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 110,
|
|
"sha256": "cb4d9091e0e28277c9e79625323f0898481cb5590d0a7ab58f4d80696225a4fc",
|
|
"archiveValidation": "accepted",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Not supported on Frame: Changes gamescope/X11 dimming properties; no mapping to Frame VR display brightness exists."
|
|
}
|
|
},
|
|
{
|
|
"id": 111,
|
|
"name": "Music Control",
|
|
"version": "1.1.7",
|
|
"sha256": "3f56a3f56034b277ea74a2c37cc84133b69e382aa6bcb0b43876776aac737ed9",
|
|
"tags": [
|
|
"media",
|
|
"mpris",
|
|
"music"
|
|
],
|
|
"folder": "MusicControl",
|
|
"archiveBytes": 27151,
|
|
"api": "legacy",
|
|
"flags": [],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"MusicControl/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogButton",
|
|
"Focusable",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SidebarNavigation",
|
|
"SliderField",
|
|
"SteamSpinner",
|
|
"definePlugin",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/martinpl/music-control"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Panel initializer succeeds with backend/network blocked; actual controls and backend remain unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 111,
|
|
"name": "Music Control",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "warn",
|
|
"message": "Resolve failed: [object Object] promise [object Promise]"
|
|
},
|
|
{
|
|
"kind": "warn",
|
|
"message": "Resolve failed: [object Object] promise [object Promise]"
|
|
}
|
|
],
|
|
"methods": [
|
|
"sp_list_media_players"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 111,
|
|
"accepted": true,
|
|
"folder": "MusicControl"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 111,
|
|
"sha256": "3f56a3f56034b277ea74a2c37cc84133b69e382aa6bcb0b43876776aac737ed9",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 112,
|
|
"name": "Better Keyboard",
|
|
"version": "0.3.4",
|
|
"sha256": "8e065d37b5c9d7f37203cb2ec9bc6cb54c136b901c998650c7c6ffb30aee8d46",
|
|
"tags": [
|
|
"keyboard",
|
|
"utility"
|
|
],
|
|
"folder": "BetterKeyboard",
|
|
"archiveBytes": 545394,
|
|
"api": 1,
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"BetterKeyboard/main.py",
|
|
"BetterKeyboard/py_modules/evdev_mod/eventio_async.py",
|
|
"BetterKeyboard/py_modules/evdev_mod/events.py",
|
|
"BetterKeyboard/py_modules/evdev_mod/device.py",
|
|
"BetterKeyboard/py_modules/evdev_mod/input.py",
|
|
"BetterKeyboard/py_modules/evdev_mod/__init__.py",
|
|
"BetterKeyboard/py_modules/evdev_mod/eventio.py",
|
|
"BetterKeyboard/py_modules/evdev_mod/util.py",
|
|
"BetterKeyboard/py_modules/evdev_mod/ecodes.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Settings.GetCurrentLanguage",
|
|
"UI.GetUIMode",
|
|
"UI.RegisterForUIModeChanged"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"EUIMode",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ToggleField",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"SteamUIStore",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"/dev/input"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/chenx-dust/BetterKeyboard",
|
|
"https://github.com/chenx-dust/BetterKeyboard.git",
|
|
"https://github.com/gvalkov/python-evdev"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service. Frontend audit failed: window.SteamClient.UI.GetUIMode is not a function.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 112,
|
|
"name": "Better Keyboard",
|
|
"ready": false,
|
|
"error": "window.SteamClient.UI.GetUIMode is not a function",
|
|
"logs": [],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 112,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "/dev/input",
|
|
"uiSurfaces": [
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 112,
|
|
"sha256": "8e065d37b5c9d7f37203cb2ec9bc6cb54c136b901c998650c7c6ffb30aee8d46",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service. Frontend audit failed: window.SteamClient.UI.GetUIMode is not a function."
|
|
}
|
|
},
|
|
{
|
|
"id": 113,
|
|
"name": "Decky LSFG-VK",
|
|
"version": "0.12.2",
|
|
"sha256": "ec59fc8aceb4e1abe2066b3a0707ed6313cabc4421b7c17765397903e2f8fd26",
|
|
"tags": [
|
|
"framegen",
|
|
"installer",
|
|
"lossless",
|
|
"lsfg",
|
|
"scaling",
|
|
"vulkan"
|
|
],
|
|
"folder": "decky-lsfg-vk",
|
|
"archiveBytes": 16145293,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-lsfg-vk/main.py",
|
|
"decky-lsfg-vk/shared_config.py",
|
|
"decky-lsfg-vk/py_modules/lsfg_vk/dll_detection.py",
|
|
"decky-lsfg-vk/py_modules/lsfg_vk/configuration.py",
|
|
"decky-lsfg-vk/py_modules/lsfg_vk/base_service.py",
|
|
"decky-lsfg-vk/py_modules/lsfg_vk/config_schema_generated.py",
|
|
"decky-lsfg-vk/py_modules/lsfg_vk/plugin.py",
|
|
"decky-lsfg-vk/py_modules/lsfg_vk/types.py",
|
|
"decky-lsfg-vk/py_modules/lsfg_vk/constants.py",
|
|
"decky-lsfg-vk/py_modules/lsfg_vk/config_schema.py",
|
|
"decky-lsfg-vk/py_modules/lsfg_vk/flatpak_service.py",
|
|
"decky-lsfg-vk/py_modules/lsfg_vk/configuration_helpers_generated.py",
|
|
"decky-lsfg-vk/py_modules/lsfg_vk/installation.py",
|
|
"decky-lsfg-vk/py_modules/lsfg_vk/__init__.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogBody",
|
|
"DialogButton",
|
|
"DialogControlsSection",
|
|
"DialogControlsSectionHeader",
|
|
"DialogHeader",
|
|
"Dropdown",
|
|
"Field",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SliderField",
|
|
"Spinner",
|
|
"TextField",
|
|
"Toggle",
|
|
"ToggleField",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"flatpak",
|
|
"x86_64"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/PancakeTAS/lsfg-vk",
|
|
"https://github.com/xXJSONDeruloXx/decky-lossless-scaling-vk",
|
|
"https://github.com/xXJSONDeruloXx/decky-lsfg-vk",
|
|
"https://github.com/xXJSONDeruloXx/decky-lsfg-vk.git",
|
|
"https://github.com/xXJSONDeruloXx/lsfg-vk"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; runtime LSFG/Windows DLL downloads and Vulkan integration are not ARM64-validated.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 113,
|
|
"name": "Decky LSFG-VK",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Error loading lsfg config: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Error loading profiles: Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"check_lsfg_vk_installed",
|
|
"check_lossless_scaling_dll",
|
|
"get_lsfg_config",
|
|
"get_profiles"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 113,
|
|
"accepted": true,
|
|
"folder": "decky-lsfg-vk"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "flatpak; x86_64",
|
|
"uiSurfaces": [
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 113,
|
|
"sha256": "ec59fc8aceb4e1abe2066b3a0707ed6313cabc4421b7c17765397903e2f8fd26",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"runningFollowUp": {
|
|
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
|
|
"mode": "synthetic nonempty running/library replay; backend and network denied",
|
|
"frontendReady": true
|
|
}
|
|
},
|
|
{
|
|
"id": 114,
|
|
"name": "Network Sentinel",
|
|
"version": "1.0.4",
|
|
"sha256": "d3e07f40a0c800e72d15594e03c8c61e9bf3092524a578a0260520e735b971a5",
|
|
"tags": [
|
|
"gaming",
|
|
"monitoring",
|
|
"network",
|
|
"performance"
|
|
],
|
|
"folder": "network-sentinel",
|
|
"archiveBytes": 463678,
|
|
"api": 1,
|
|
"flags": [
|
|
"debug",
|
|
"_root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"network-sentinel/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"SliderField",
|
|
"ToggleField",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/KrishGaur1354/network-sentinel",
|
|
"https://github.com/KrishGaur1354/network-sentinel.git",
|
|
"https://github.com/SteamDeckHomebrew/decky-frontend-lib",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 114,
|
|
"name": "Network Sentinel",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to get network status: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to get live ping: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to load settings: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to load connection info: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to get network history: Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_network_status",
|
|
"get_live_ping",
|
|
"get_settings",
|
|
"get_connection_info",
|
|
"get_network_history"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 114,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 114,
|
|
"sha256": "d3e07f40a0c800e72d15594e03c8c61e9bf3092524a578a0260520e735b971a5",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service."
|
|
}
|
|
},
|
|
{
|
|
"id": 115,
|
|
"name": "Decky Clash",
|
|
"version": "1.3.0",
|
|
"sha256": "2b96cc96ad3780a51fa794c250e821e15b3716851f4c96cb3d0a1e2f38890424",
|
|
"tags": [
|
|
"network",
|
|
"root"
|
|
],
|
|
"folder": "DeckyClash",
|
|
"archiveBytes": 49109460,
|
|
"api": 1,
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"DeckyClash/main.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/scalarfloat.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/scalarint.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/tokens.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/main.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/nodes.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/comments.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/parser.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/dumper.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/error.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/timestamp.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/docinfo.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/configobjwalker.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/composer.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/scanner.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/constructor.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/compat.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/representer.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/mergevalue.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/cyaml.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/reader.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/serializer.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/anchor.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/util.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/__init__.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/scalarbool.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/resolver.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/tag.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/events.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/clibz/setup.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/clibz/__init__.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/emitter.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/loader.py",
|
|
"DeckyClash/py_modules/ruamel/yaml/scalarstring.py",
|
|
"DeckyClash/py_modules/webdav_backup.py",
|
|
"DeckyClash/py_modules/utils.py",
|
|
"DeckyClash/py_modules/extract.py",
|
|
"DeckyClash/py_modules/external.py",
|
|
"DeckyClash/py_modules/dashboard.py",
|
|
"DeckyClash/py_modules/metadata.py",
|
|
"DeckyClash/py_modules/config.py",
|
|
"DeckyClash/py_modules/core.py",
|
|
"DeckyClash/py_modules/subscription.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Settings.GetCurrentLanguage"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogBody",
|
|
"DialogButton",
|
|
"DialogControlsSection",
|
|
"DialogControlsSectionHeader",
|
|
"Dropdown",
|
|
"DropdownItem",
|
|
"Field",
|
|
"Focusable",
|
|
"GamepadButton",
|
|
"Menu",
|
|
"MenuItem",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SidebarNavigation",
|
|
"SliderField",
|
|
"Spinner",
|
|
"TextField",
|
|
"ToggleField",
|
|
"showContextMenu",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/MetaCubeX/metacubexd",
|
|
"https://github.com/MetaCubeX/mihomo",
|
|
"https://github.com/YukiCoco/ToMoon",
|
|
"https://github.com/Zephyruso/zashboard",
|
|
"https://github.com/chenx-dust/DeckyClash",
|
|
"https://github.com/chenx-dust/DeckyClash.git",
|
|
"https://github.com/chenx-dust/meta-rules-dat",
|
|
"https://github.com/haishanh/yacd",
|
|
"https://github.com/pre-commit/pre-commit"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 115,
|
|
"name": "Decky Clash",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_config",
|
|
"get_subscription_list",
|
|
"get_dashboard_list",
|
|
"get_ip",
|
|
"get_version"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 115,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 115,
|
|
"sha256": "2b96cc96ad3780a51fa794c250e821e15b3716851f4c96cb3d0a1e2f38890424",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 116,
|
|
"name": "Muon",
|
|
"version": "0.2.1",
|
|
"sha256": "a7659c79b74110476cc4458cb10530cdcb2539fa11bc8c759038a080eaa81049",
|
|
"tags": [
|
|
"adhoc",
|
|
"multiplayer",
|
|
"p2p",
|
|
"root",
|
|
"wifi"
|
|
],
|
|
"folder": "Muon",
|
|
"archiveBytes": 488491,
|
|
"api": 1,
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"Muon/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"System",
|
|
"System.RegisterForOnResumeFromSuspend",
|
|
"System.RegisterForOnSuspendRequest"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogButton",
|
|
"Field",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"TextField",
|
|
"Toggle",
|
|
"findModuleExport",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"sudo",
|
|
"systemctl"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/Tormak9970/TabMaster",
|
|
"https://github.com/wtlnetwork/muon",
|
|
"https://github.com/wtlnetwork/muon.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 116,
|
|
"name": "Muon",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to fetch IP address Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to initialize settings: Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_ip_address",
|
|
"load_settings"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 116,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "sudo; systemctl",
|
|
"uiSurfaces": [
|
|
"toasts",
|
|
"Steam page patches/module lookup"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 116,
|
|
"sha256": "a7659c79b74110476cc4458cb10530cdcb2539fa11bc8c759038a080eaa81049",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 117,
|
|
"name": "DeckyParty File Manager",
|
|
"version": "1.0.0",
|
|
"sha256": "193fb3aa0446fbc3c6bae0ae15700b5f04acebfa917b8e1791988c6ce832dddf",
|
|
"tags": [
|
|
"control",
|
|
"files",
|
|
"fileserver",
|
|
"management",
|
|
"utility",
|
|
"web"
|
|
],
|
|
"folder": "Decky-CP",
|
|
"archiveBytes": 1051080,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"debug"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"Decky-CP/main.py",
|
|
"Decky-CP/bin/copyparty-sfx.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"sudo"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/39sdev/Decky-CP",
|
|
"https://github.com/9001/copyparty"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; privileged file operations and backend are unverified. No file changes were run.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 117,
|
|
"name": "DeckyParty File Manager",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_status"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 117,
|
|
"accepted": true,
|
|
"folder": "Decky-CP"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "sudo",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 117,
|
|
"sha256": "193fb3aa0446fbc3c6bae0ae15700b5f04acebfa917b8e1791988c6ce832dddf",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 118,
|
|
"name": "Speed Test",
|
|
"version": "1.0.2",
|
|
"sha256": "8b1ee429aece9330b83ea3fc2e7e27d007ac61a737169f20bda3f1a19ab95508",
|
|
"tags": [
|
|
"network",
|
|
"speed",
|
|
"utility"
|
|
],
|
|
"folder": "decky-speed-test",
|
|
"archiveBytes": 459951,
|
|
"api": 1,
|
|
"flags": [
|
|
"debug"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"staticClasses"
|
|
],
|
|
"globals": [],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/Dukeman330/decky-speed-test",
|
|
"https://github.com/Dukeman330/decky-speed-test.git",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/user-attachments/assets"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; automatic bandwidth tests were blocked by the audit network policy.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 118,
|
|
"name": "Speed Test",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Download test error: Error: Audit blocks plugin network"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Download test error: Error: Audit blocks plugin network"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Download test error: Error: Audit blocks plugin network"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Download test error: Error: Audit blocks plugin network"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Download test error: Error: Audit blocks plugin network"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Download test error: Error: Audit blocks plugin network"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Download test error: Error: Audit blocks plugin network"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Download test error: Error: Audit blocks plugin network"
|
|
}
|
|
],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 118,
|
|
"accepted": true,
|
|
"folder": "decky-speed-test"
|
|
},
|
|
"backend": "no Python/native backend found",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 118,
|
|
"sha256": "8b1ee429aece9330b83ea3fc2e7e27d007ac61a737169f20bda3f1a19ab95508",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 119,
|
|
"name": "Decky Clipboard",
|
|
"version": "1.0.1",
|
|
"sha256": "d283bd9a5c35b3fac3788391736a6763f3e8c4615831a7c560c9fa6e6c0950ac",
|
|
"tags": [
|
|
"clipboard",
|
|
"utility",
|
|
"web"
|
|
],
|
|
"folder": "decky-clipboard",
|
|
"archiveBytes": 512778,
|
|
"api": 1,
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-clipboard/main.py",
|
|
"decky-clipboard/py_modules/clipboard.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "decky-clipboard/bin/xclip",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogBody",
|
|
"DialogButton",
|
|
"DialogControlsSection",
|
|
"DialogControlsSectionHeader",
|
|
"Field",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SidebarNavigation",
|
|
"SliderField",
|
|
"TextField",
|
|
"ToggleField",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook",
|
|
"toaster"
|
|
],
|
|
"hardwareSignals": [
|
|
"gamescope",
|
|
"sudo"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-plugin-template",
|
|
"https://github.com/SteamDeckHomebrew/decky-plugin-template.git",
|
|
"https://github.com/Torther/DeckyClipboard",
|
|
"https://github.com/astrand/xclip"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: decky-clipboard/bin/xclip.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 119,
|
|
"name": "Decky Clipboard",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to get server status: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to get clipboard: Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_server_status",
|
|
"get_clipboard_data"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 119,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: decky-clipboard/bin/xclip"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "gamescope; sudo",
|
|
"nativePort": "xclip needs ARM64 X11 libraries/server; root and gamescope assumptions also block this archive.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 119,
|
|
"sha256": "d283bd9a5c35b3fac3788391736a6763f3e8c4615831a7c560c9fa6e6c0950ac",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: decky-clipboard/bin/xclip",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: decky-clipboard/bin/xclip."
|
|
}
|
|
},
|
|
{
|
|
"id": 120,
|
|
"name": "Reroll",
|
|
"version": "0.2.1",
|
|
"sha256": "fb573890f5f87553893c08d6cb2fd8eaf87d54ce54383365e65e545634c55b3c",
|
|
"tags": [
|
|
"developer",
|
|
"memory",
|
|
"tools",
|
|
"utility"
|
|
],
|
|
"folder": "Reroll",
|
|
"archiveBytes": 2146047,
|
|
"api": 1,
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"Reroll/main.py",
|
|
"Reroll/memscan.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "Reroll/bin/memscan.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [
|
|
"Apps.RegisterForGameActionUserRequest",
|
|
"GameSessions.RegisterForAppLifetimeNotifications",
|
|
"Settings.GetCurrentLanguage"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogButton",
|
|
"Field",
|
|
"Focusable",
|
|
"Marquee",
|
|
"ModalRoot",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"SliderField",
|
|
"libraryAssetImageClasses",
|
|
"mainMenuAppRunningClasses",
|
|
"quickAccessMenuClasses",
|
|
"showModal"
|
|
],
|
|
"globals": [
|
|
"SteamUIStore"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/CameronRedmore/memory-deck",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/SteamDeckHomebrew/decky-plugin-template",
|
|
"https://github.com/kayon/decky-reroll",
|
|
"https://github.com/kayon/decky-reroll.git",
|
|
"https://github.com/kayon/memscan"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Frontend now initializes with inert game-action subscriptions, but the archive contains x86_64 memscan.so and requests root. No process-memory access was run.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 120,
|
|
"name": "Reroll",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_setting",
|
|
"version"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 120,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: Reroll/bin/memscan.so"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"nativePort": "memscan.so needs ARM64 process-memory support and ABI testing; root requirement remains. Frontend initializes but no memory access was tested.",
|
|
"uiSurfaces": [
|
|
"QAM/global tabs",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 120,
|
|
"sha256": "fb573890f5f87553893c08d6cb2fd8eaf87d54ce54383365e65e545634c55b3c",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: Reroll/bin/memscan.so",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: Reroll/bin/memscan.so. Frontend audit failed: window.SteamClient.Apps.RegisterForGameActionUserRequest is not a function."
|
|
}
|
|
},
|
|
{
|
|
"id": 121,
|
|
"name": "DeckPass",
|
|
"version": "1.1.1",
|
|
"sha256": "4be32fd39ce406e2276b21537c98afc00a8ed1b82a23ff0e01af552352fa48f8",
|
|
"tags": [
|
|
"clipboard",
|
|
"keepass",
|
|
"password",
|
|
"password-manager",
|
|
"utility"
|
|
],
|
|
"folder": "DeckPass",
|
|
"archiveBytes": 651911,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"DeckPass/main.py",
|
|
"DeckPass/py_modules/utils.py",
|
|
"DeckPass/py_modules/password_manager.py",
|
|
"DeckPass/py_modules/keypass_cli.py",
|
|
"DeckPass/py_modules/keypass_flatpak.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Apps.AddShortcut",
|
|
"Apps.RunGame",
|
|
"Apps.SetCustomArtworkForApp",
|
|
"Apps.SetShortcutExe",
|
|
"Apps.SetShortcutLaunchOptions",
|
|
"Apps.SetShortcutName",
|
|
"Input.ControllerKeyboardSendText"
|
|
],
|
|
"dfl": [
|
|
"Button",
|
|
"ButtonItem",
|
|
"DialogButton",
|
|
"Field",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"TextField",
|
|
"findSP",
|
|
"showModal",
|
|
"sleep",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"appDetailsStore",
|
|
"appStore",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"flatpak"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/Fisch03/SDH-QuickLaunch",
|
|
"https://github.com/Teppichseite/DeckPass",
|
|
"https://github.com/Teppichseite/DeckPass.git",
|
|
"https://github.com/aarron-lee/SimpleDeckyTDP"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; KeePass Flatpak discovery and secrets integration were not exercised.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 121,
|
|
"name": "DeckPass",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"check_setup_state",
|
|
"check_keepass_flatpak_install_state"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 121,
|
|
"accepted": true,
|
|
"folder": "DeckPass"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "flatpak",
|
|
"uiSurfaces": [
|
|
"toasts",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 121,
|
|
"sha256": "4be32fd39ce406e2276b21537c98afc00a8ed1b82a23ff0e01af552352fa48f8",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 123,
|
|
"name": "Steam Status",
|
|
"version": "1.2.3",
|
|
"sha256": "9053308e04a74f44745b45b9f4f50af3673348d367e7b14bacc5677de707ac4e",
|
|
"tags": [
|
|
"monitoring",
|
|
"status",
|
|
"steam"
|
|
],
|
|
"folder": "steamstatus-decky",
|
|
"archiveBytes": 1147408,
|
|
"api": 2,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"steamstatus-decky/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogButton",
|
|
"Field",
|
|
"Focusable",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"SliderField",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"toaster"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/bschelst/steamstatus-decky",
|
|
"https://github.com/bschelst/steamstatus-decky.git",
|
|
"https://github.com/sponsors/bschelst"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Settings/public status rendered locally; cache errors fixed. Read-only get_settings RPC returned actual Decky 3.3.0 defaults on ARM64 Frame. Persistence, live backend diagnostics and VR controls unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame",
|
|
"real Frame SSH"
|
|
],
|
|
"browser": {
|
|
"id": 123,
|
|
"name": "Steam Status",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Background monitor: Failed to fetch Steam status: Audit blocks plugin network"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to fetch Steam status: Audit blocks plugin network"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[SteamStatus] loadSettings: Failed to load settings: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[SteamStatus] loadSettings: Failed to load settings: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[SteamStatus] loadSettings: Failed to load settings: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[SteamStatus] loadSettings: Failed to load settings: Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_settings"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 123,
|
|
"accepted": true,
|
|
"folder": "steamstatus-decky"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 123,
|
|
"sha256": "9053308e04a74f44745b45b9f4f50af3673348d367e7b14bacc5677de707ac4e",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"realFrame": {
|
|
"id": 123,
|
|
"version": "1.2.3",
|
|
"sha256": "9053308e04a74f44745b45b9f4f50af3673348d367e7b14bacc5677de707ac4e",
|
|
"method": "get_settings",
|
|
"result": {
|
|
"keys": [
|
|
"enable_notification_antiflood",
|
|
"enable_notifications",
|
|
"gateway_api_key",
|
|
"gateway_url",
|
|
"refresh_interval_seconds",
|
|
"show_history",
|
|
"show_regions",
|
|
"show_trending_games"
|
|
],
|
|
"defaultRefreshInterval": 120
|
|
},
|
|
"errors": []
|
|
}
|
|
},
|
|
{
|
|
"id": 124,
|
|
"name": "AlarMe",
|
|
"version": "1.6.3",
|
|
"sha256": "17d4166a9e98979df5fdb07c7eae42317acd54a453d3b82757508f971193c0fe",
|
|
"tags": [
|
|
"alarm",
|
|
"clock",
|
|
"pomodoro",
|
|
"productivity",
|
|
"snooze",
|
|
"timer"
|
|
],
|
|
"folder": "alarme-decky-plugin",
|
|
"archiveBytes": 5566522,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"alarme-decky-plugin/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"GameSessions.RegisterForAppLifetimeNotifications"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"Dropdown",
|
|
"Focusable",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ProgressBarWithInfo",
|
|
"SidebarNavigation",
|
|
"SliderField",
|
|
"TextField",
|
|
"ToggleField",
|
|
"findModuleChild",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/decktools-xyz/simple-timer",
|
|
"https://github.com/lemossilva/alarme-decky-plugin",
|
|
"https://github.com/lemossilva/alarme-decky-plugin.git",
|
|
"https://github.com/mpcallahan/DeckyHourNotifications"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Silent labeled timer create/ticks/pause/cancel, preset save/cancel-confirm/delete and stopwatch start/lap/pause/reset/reopen pass in local Chromium with the official Decky 3.3.0 ARM64 backend. Audio, alarms/reminders, suspend inhibition, Steam overlays and worn VR remain unverified; notifications require the panel to stay open.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame",
|
|
"real Frame SSH"
|
|
],
|
|
"browser": {
|
|
"id": 124,
|
|
"name": "AlarMe",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to load timers: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to load recent timers: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to load settings: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to load settings: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to load sleep inhibitor status: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to fetch missed items Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to load timers: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to load recent timers: Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_active_timers",
|
|
"get_recent_timers",
|
|
"get_settings",
|
|
"get_presets",
|
|
"get_sleep_inhibitor_status",
|
|
"get_missed_items",
|
|
"stopwatch_get_state",
|
|
"get_pomodoro_state",
|
|
"get_reminders",
|
|
"get_game_status"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 124,
|
|
"accepted": true,
|
|
"folder": "alarme-decky-plugin"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "Timers/stopwatch use Python. Optional sleep inhibition opens /dev/uinput; sound and auto-suspend are unverified. Steam game overlays have no target in the isolated panel.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 124,
|
|
"sha256": "17d4166a9e98979df5fdb07c7eae42317acd54a453d3b82757508f971193c0fe",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"runningFollowUp": {
|
|
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
|
|
"mode": "synthetic nonempty running/library replay; backend and network denied",
|
|
"frontendReady": true
|
|
},
|
|
"controlsFollowUp": {
|
|
"evidence": "docs/evidence/framey-dialog-controls-2026-10-26.json",
|
|
"mode": "local opaque-iframe Chromium with receipt-bound official ARM64 backend RPC/events; private silent data only",
|
|
"frontendReady": true,
|
|
"status": "partial"
|
|
}
|
|
},
|
|
{
|
|
"id": 125,
|
|
"name": "Decky Localsend",
|
|
"version": "0.4.5",
|
|
"sha256": "e271ccb55eb23f918b99a69f79aec905df4c9b2ef7b23bbf4ec1c2d1a6f0c6b7",
|
|
"tags": [
|
|
"Clipboard",
|
|
"localsend",
|
|
"Screenshot",
|
|
"Text",
|
|
"transfer"
|
|
],
|
|
"folder": "decky-localsend",
|
|
"archiveBytes": 7120631,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-localsend/main.py",
|
|
"decky-localsend/py_modules/file_utils.py",
|
|
"decky-localsend/py_modules/config_utils.py",
|
|
"decky-localsend/py_modules/http_utils.py",
|
|
"decky-localsend/py_modules/__init__.py",
|
|
"decky-localsend/py_modules/notify_server.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "decky-localsend/bin/localsend-core",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogBody",
|
|
"DialogButton",
|
|
"DialogButtonPrimary",
|
|
"DialogFooter",
|
|
"DialogHeader",
|
|
"Field",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SidebarNavigation",
|
|
"TextField",
|
|
"ToggleField",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook",
|
|
"toaster"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/MoYoez/localsend-go",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/moyoez/decky-localsend",
|
|
"https://github.com/moyoez/decky-localsend.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: decky-localsend/bin/localsend-core.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 125,
|
|
"name": "Decky Localsend",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to load receive history: Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_receive_history",
|
|
"get_backend_status",
|
|
"get_backend_config"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 125,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: decky-localsend/bin/localsend-core"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"nativePort": "MIT LocalSend-Go 66edc509a28b9f877e7374504892dcbc653a4da4 reproducibly cross-built with Go 1.25.7/CGO_ENABLED=0 for ARM64; SHA-256 e79238f6051ce34f172f765ae918d3d902b819e27377989a55e5b1eba10e46f9. Help/official backend CLI flags and protocol 2.0 info endpoint passed on real Frame in an isolated network namespace. No file transfer or full plugin/CEF integration tested; exact source match to shipped helper unproven. Official ZIP stays x86_64 and blocked.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 125,
|
|
"sha256": "e271ccb55eb23f918b99a69f79aec905df4c9b2ef7b23bbf4ec1c2d1a6f0c6b7",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: decky-localsend/bin/localsend-core",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: decky-localsend/bin/localsend-core."
|
|
}
|
|
},
|
|
{
|
|
"id": 126,
|
|
"name": "Launch Options",
|
|
"version": "1.9.2",
|
|
"sha256": "381ac8b915402176cf768d1ccc1bc29a6b82ea9255675f0a30c0c81ea5427225",
|
|
"tags": [
|
|
"launch options",
|
|
"quality of life"
|
|
],
|
|
"folder": "decky-launch-options",
|
|
"archiveBytes": 577859,
|
|
"api": 1,
|
|
"flags": [
|
|
"debug"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-launch-options/main.py",
|
|
"decky-launch-options/run.py",
|
|
"decky-launch-options/shared.py",
|
|
"decky-launch-options/tests.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "decky-launch-options/bin/hello",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [
|
|
"Apps.RegisterForAppDetails",
|
|
"Apps.SetAppLaunchOptions"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogBody",
|
|
"DialogButton",
|
|
"DialogButtonPrimary",
|
|
"DialogControlsSection",
|
|
"DialogControlsSectionHeader",
|
|
"DialogFooter",
|
|
"DialogHeader",
|
|
"Dropdown",
|
|
"Field",
|
|
"Focusable",
|
|
"MenuItem",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ScrollPanel",
|
|
"SidebarNavigation",
|
|
"SteamSpinner",
|
|
"Tabs",
|
|
"TextField",
|
|
"Toggle",
|
|
"ToggleField",
|
|
"afterPatch",
|
|
"createReactTreePatcher",
|
|
"fakeRenderComponent",
|
|
"findInReactTree",
|
|
"findInTree",
|
|
"findModule",
|
|
"findModuleByExport",
|
|
"showModal",
|
|
"staticClasses",
|
|
"useParams"
|
|
],
|
|
"globals": [
|
|
"SteamUIStore",
|
|
"routerHook"
|
|
],
|
|
"hardwareSignals": [
|
|
"flatpak",
|
|
"gamescope"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/Wurielle/decky-launch-options",
|
|
"https://github.com/Wurielle/decky-launch-options-recipes",
|
|
"https://github.com/Wurielle/decky-launch-options.git",
|
|
"https://github.com/casey/just"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: decky-launch-options/bin/hello. Frontend audit failed: Cannot convert undefined or null to object.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 126,
|
|
"name": "Launch Options",
|
|
"ready": false,
|
|
"error": "Cannot convert undefined or null to object",
|
|
"logs": [],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 126,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: decky-launch-options/bin/hello"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "flatpak; gamescope",
|
|
"nativePort": "Remove the template x86 bin/hello or publish an ARM64 rebuild; missing Steam module mapping also prevents frontend initialization.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 126,
|
|
"sha256": "381ac8b915402176cf768d1ccc1bc29a6b82ea9255675f0a30c0c81ea5427225",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: decky-launch-options/bin/hello",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: decky-launch-options/bin/hello. Frontend audit failed: Cannot convert undefined or null to object."
|
|
}
|
|
},
|
|
{
|
|
"id": 127,
|
|
"name": "Decky Translator",
|
|
"version": "0.9.0",
|
|
"sha256": "3def99993c412b669933376b6420e44c68cd1fe9d9baf14b77a1f231242bd7e8",
|
|
"tags": [
|
|
"Translation"
|
|
],
|
|
"folder": "decky-translator",
|
|
"archiveBytes": 2543309,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-translator/main.py",
|
|
"decky-translator/py_modules/providers/ocrspace.py",
|
|
"decky-translator/py_modules/providers/google_translate.py",
|
|
"decky-translator/py_modules/providers/chromescreenai_subprocess.py",
|
|
"decky-translator/py_modules/providers/chromescreenai_provider.py",
|
|
"decky-translator/py_modules/providers/gemini_vision.py",
|
|
"decky-translator/py_modules/providers/python_runtime.py",
|
|
"decky-translator/py_modules/providers/screenai_downloader.py",
|
|
"decky-translator/py_modules/providers/rapidocr_downloader.py",
|
|
"decky-translator/py_modules/providers/base.py",
|
|
"decky-translator/py_modules/providers/free_translate.py",
|
|
"decky-translator/py_modules/providers/ct2_translate_worker.py",
|
|
"decky-translator/py_modules/providers/nllb_downloader.py",
|
|
"decky-translator/py_modules/providers/chromescreenai_protos/chrome_screen_ai_pb2.py",
|
|
"decky-translator/py_modules/providers/chromescreenai_protos/__init__.py",
|
|
"decky-translator/py_modules/providers/google_ocr.py",
|
|
"decky-translator/py_modules/providers/rapidocr_provider.py",
|
|
"decky-translator/py_modules/providers/__init__.py",
|
|
"decky-translator/py_modules/providers/ct2_translate.py",
|
|
"decky-translator/py_modules/providers/rapidocr_subprocess.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"User.RegisterForPrepareForSystemSuspendProgress"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogButton",
|
|
"Dropdown",
|
|
"DropdownItem",
|
|
"Field",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Router",
|
|
"SliderField",
|
|
"Tabs",
|
|
"TextField",
|
|
"ToggleField",
|
|
"findModuleChild",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"/dev/hidraw",
|
|
"/sys/class/hidraw/hidraw{i}",
|
|
"/sys/class/hidraw/hidraw{i}/device/uevent",
|
|
"x86_64"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/MeKo-Christian/paddleocr-onnx",
|
|
"https://github.com/OpenNMT/CTranslate2",
|
|
"https://github.com/PaddlePaddle/PaddleOCR",
|
|
"https://github.com/RapidAI/RapidOCR",
|
|
"https://github.com/SethRobinson/UGT",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/astral-sh/python-build-standalone",
|
|
"https://github.com/cat-in-a-box/Decky-Translator",
|
|
"https://github.com/cat-in-a-box/decky-translator",
|
|
"https://github.com/cat-in-a-box/decky-translator.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; x86_64 download and hidraw/controller assumptions need an ARM64 audit. OCR/translation not exercised.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 127,
|
|
"name": "Decky Translator",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_enabled_state",
|
|
"get_provider_status",
|
|
"get_all_settings",
|
|
"check_web_reachability",
|
|
"get_hidraw_button_state"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 127,
|
|
"accepted": true,
|
|
"folder": "decky-translator"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "/dev/hidraw; /sys/class/hidraw/hidraw{i}; /sys/class/hidraw/hidraw{i}/device/uevent; x86_64",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 127,
|
|
"sha256": "3def99993c412b669933376b6420e44c68cd1fe9d9baf14b77a1f231242bd7e8",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"runningFollowUp": {
|
|
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
|
|
"mode": "synthetic nonempty running/library replay; backend and network denied",
|
|
"frontendReady": true
|
|
}
|
|
},
|
|
{
|
|
"id": 128,
|
|
"name": "Quick User Switcher",
|
|
"version": "1.0.0",
|
|
"sha256": "187871a139862fc21d70286d8c1b2c2f0f7609604f88fc16415da71c4e56cef9",
|
|
"tags": [
|
|
"root",
|
|
"utility"
|
|
],
|
|
"folder": "decky-multi-user",
|
|
"archiveBytes": 457889,
|
|
"api": 1,
|
|
"flags": [
|
|
"_root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-multi-user/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"Focusable",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ToggleField",
|
|
"afterPatch",
|
|
"showModal",
|
|
"staticClasses",
|
|
"wrapReactType"
|
|
],
|
|
"globals": [
|
|
"Router",
|
|
"routerHook"
|
|
],
|
|
"hardwareSignals": [
|
|
"sudo"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/cli",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/nikitaclicks/decky-multi-user",
|
|
"https://github.com/nikitaclicks/decky-multi-user.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 128,
|
|
"name": "Quick User Switcher",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "[MultiUser] Pending launch check failed: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[MultiUser] Error loading users: Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"trigger_pending_launch",
|
|
"get_users",
|
|
"get_current_user",
|
|
"get_setting"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 128,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "sudo",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"Steam page patches/module lookup"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 128,
|
|
"sha256": "187871a139862fc21d70286d8c1b2c2f0f7609604f88fc16415da71c4e56cef9",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 129,
|
|
"name": "ShadowDeck",
|
|
"version": "1.1.11",
|
|
"sha256": "2b97b769a49ac2a45f546090fc96d07e09e146020104d708a0efdad990687f8b",
|
|
"tags": [
|
|
"network",
|
|
"proxy",
|
|
"root",
|
|
"vpn"
|
|
],
|
|
"folder": "ShadowDeck",
|
|
"archiveBytes": 16908452,
|
|
"api": 1,
|
|
"flags": [
|
|
"debug",
|
|
"root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"ShadowDeck/main.py",
|
|
"ShadowDeck/py_modules/shadowdeck/singbox_manager.py",
|
|
"ShadowDeck/py_modules/shadowdeck/__init__.py",
|
|
"ShadowDeck/py_modules/shadowdeck/config_renderer.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogButton",
|
|
"DropdownItem",
|
|
"Focusable",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"TextField",
|
|
"Toggle",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"toaster"
|
|
],
|
|
"hardwareSignals": [
|
|
"amd64"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/SagerNet/sing-box",
|
|
"https://github.com/tikh-iv/ShadowDeck",
|
|
"https://github.com/tikh-iv/ShadowDeck.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 129,
|
|
"name": "ShadowDeck",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "[FRONTEND] loadInitialSettings: Failed to load settings: Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_all_settings"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 129,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "amd64",
|
|
"uiSurfaces": [
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 129,
|
|
"sha256": "2b97b769a49ac2a45f546090fc96d07e09e146020104d708a0efdad990687f8b",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 130,
|
|
"name": "Games Prefix Manager",
|
|
"version": "1.0.1",
|
|
"sha256": "ef8c727943188cad04c63fae7e4e620b8080c07f35dec0c144e99c6166307473",
|
|
"tags": [
|
|
"utilities"
|
|
],
|
|
"folder": "GamesPrefixManager",
|
|
"archiveBytes": 20058,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"GamesPrefixManager/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogButton",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"TextField",
|
|
"definePlugin",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/Saad-Alareqi/GamesPrefixManager"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 130,
|
|
"name": "Games Prefix Manager",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 130,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 130,
|
|
"sha256": "ef8c727943188cad04c63fae7e4e620b8080c07f35dec0c144e99c6166307473",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service."
|
|
}
|
|
},
|
|
{
|
|
"id": 131,
|
|
"name": "Download All",
|
|
"version": "1.1.0",
|
|
"sha256": "0641231eec139e3231e7b5369d0dbacefd686b52e3f2fffb39384876881408da",
|
|
"tags": [
|
|
"downloads",
|
|
"queue"
|
|
],
|
|
"folder": "decky-download-all",
|
|
"archiveBytes": 458857,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-download-all/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Downloads",
|
|
"Downloads.RegisterForDownloadItems"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"SliderField"
|
|
],
|
|
"globals": [
|
|
"appStore",
|
|
"toaster"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-plugin-template",
|
|
"https://github.com/SteamDeckHomebrew/decky-plugin-template.git",
|
|
"https://github.com/bentemple/decky-download-all"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Initializer succeeds; Steam download registration is absent, so the primary action is unavailable.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 131,
|
|
"name": "Download All",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "TypeError: Cannot read properties of undefined (reading 'RegisterForDownloadItems')"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Failed to log: Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"log_from_ui"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 131,
|
|
"accepted": true,
|
|
"folder": "decky-download-all"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"toasts",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 131,
|
|
"sha256": "0641231eec139e3231e7b5369d0dbacefd686b52e3f2fffb39384876881408da",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 132,
|
|
"name": "SuggestMe",
|
|
"version": "1.5.3",
|
|
"sha256": "248294b5d6b9d5a5d635ce35f4b5185ce59d4e4fd59353e24df4b29d74c2ade4",
|
|
"tags": [
|
|
"game-library",
|
|
"recommendations",
|
|
"steam",
|
|
"suggestion"
|
|
],
|
|
"folder": "SuggestMe-decky-plugin",
|
|
"archiveBytes": 692130,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"SuggestMe-decky-plugin/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"GameSessions.RegisterForAppLifetimeNotifications"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DropdownItem",
|
|
"Focusable",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ProgressBar",
|
|
"SidebarNavigation",
|
|
"SliderField",
|
|
"Spinner",
|
|
"TextField",
|
|
"ToggleField",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"appStore",
|
|
"collectionStore",
|
|
"routerHook",
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/Tormak9970/TabMaster",
|
|
"https://github.com/lemossilva/suggestme-decky-plugin",
|
|
"https://github.com/lemossilva/suggestme-decky-plugin.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; recommendation backend and Steam library data unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 132,
|
|
"name": "SuggestMe",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "[SuggestMe] Failed to load config: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[SuggestMe] Failed to load library status: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[SuggestMe] Failed to load play next list: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[SuggestMe] Failed to load excluded games: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[SuggestMe] Failed to load filter presets: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[SuggestMe] Failed to load history: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[SuggestMe] Failed to load non-steam info: Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "[SuggestMe] Failed to load collections: Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"log_message",
|
|
"get_config",
|
|
"get_library_status",
|
|
"get_play_next_list",
|
|
"get_excluded_games",
|
|
"get_filter_presets",
|
|
"get_suggestion_history",
|
|
"get_non_steam_games",
|
|
"get_collections",
|
|
"get_available_genres",
|
|
"get_available_tags",
|
|
"get_available_community_tags"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 132,
|
|
"accepted": true,
|
|
"folder": "SuggestMe-decky-plugin"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"QAM/global tabs",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 132,
|
|
"sha256": "248294b5d6b9d5a5d635ce35f4b5185ce59d4e4fd59353e24df4b29d74c2ade4",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"runningFollowUp": {
|
|
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
|
|
"mode": "synthetic nonempty running/library replay; backend and network denied",
|
|
"frontendReady": true
|
|
}
|
|
},
|
|
{
|
|
"id": 133,
|
|
"name": "Non-Steam Badges",
|
|
"version": "0.1.0",
|
|
"sha256": "9c12b21fd02da12f4c37f9aab68d75172a11787d09c3478f15b4fc97e01df131",
|
|
"tags": [
|
|
"badges",
|
|
"non-steam",
|
|
"nonsteam",
|
|
"ui",
|
|
"utility"
|
|
],
|
|
"folder": "decky-nonsteam-badges",
|
|
"archiveBytes": 1055486,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-nonsteam-badges/main.py",
|
|
"decky-nonsteam-badges/py_modules/vdf/vdict.py",
|
|
"decky-nonsteam-badges/py_modules/vdf/__init__.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"DialogButton",
|
|
"DropdownItem",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ToggleField",
|
|
"afterPatch",
|
|
"appDetailsClasses",
|
|
"createReactTreePatcher",
|
|
"findInReactTree",
|
|
"getGamepadNavigationTrees"
|
|
],
|
|
"globals": [
|
|
"collectionStore",
|
|
"routerHook"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/mubaraknumann/unifideck",
|
|
"https://github.com/sebet/decky-nonsteam-badges",
|
|
"https://github.com/user-attachments/assets"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; Non-Steam game badges have no supported Steam page injection target.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 133,
|
|
"name": "Non-Steam Badges",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 133,
|
|
"accepted": true,
|
|
"folder": "decky-nonsteam-badges"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 133,
|
|
"sha256": "9c12b21fd02da12f4c37f9aab68d75172a11787d09c3478f15b4fc97e01df131",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 134,
|
|
"name": "Deck Progress Tracker",
|
|
"version": "1.3.6",
|
|
"sha256": "784c59e7e2a344eb6803d00e341c7d5f10d42cea7b60cc4332f4c3687db14fb3",
|
|
"tags": [
|
|
"achievements",
|
|
"enhancement",
|
|
"library",
|
|
"progress-tracking",
|
|
"statistics"
|
|
],
|
|
"folder": "deck-progress-tracker",
|
|
"archiveBytes": 502121,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"deck-progress-tracker/main.py",
|
|
"deck-progress-tracker/py_modules/steam_data.py",
|
|
"deck-progress-tracker/py_modules/database.py",
|
|
"deck-progress-tracker/py_modules/hltb_service.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Apps.GetAllApps",
|
|
"Apps.GetMyAchievementsForApp"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DialogButton",
|
|
"Focusable",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"afterPatch",
|
|
"appDetailsClasses",
|
|
"appDetailsHeaderClasses",
|
|
"createReactTreePatcher",
|
|
"findInReactTree",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"appStore",
|
|
"collectionStore",
|
|
"routerHook",
|
|
"toaster"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/ScrappyCocco/HowLongToBeat-PythonAPI",
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/maroun2/deck-progress-tracker"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; Steam game/library statistics and page patches unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 134,
|
|
"name": "Deck Progress Tracker",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_settings",
|
|
"get_tag_statistics"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 134,
|
|
"accepted": true,
|
|
"folder": "deck-progress-tracker"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 134,
|
|
"sha256": "784c59e7e2a344eb6803d00e341c7d5f10d42cea7b60cc4332f4c3687db14fb3",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 135,
|
|
"name": "Deck Shelves",
|
|
"version": "2.0.0",
|
|
"sha256": "b566280ad38fd3ecd584b5b46a855f301539eb9a86063834c64b7045f7063f91",
|
|
"tags": [
|
|
"collections",
|
|
"customization",
|
|
"filters",
|
|
"home",
|
|
"library",
|
|
"shelves",
|
|
"tabs"
|
|
],
|
|
"folder": "Deck-Shelves",
|
|
"archiveBytes": 862269,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "1",
|
|
"pythonFiles": [
|
|
"Deck-Shelves/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Apps.RegisterForAppDetails",
|
|
"System.GetOSVersion",
|
|
"System.GetSystemInfo"
|
|
],
|
|
"dfl": [
|
|
"showContextMenu"
|
|
],
|
|
"globals": [
|
|
"SteamUIStore",
|
|
"appDetailsStore",
|
|
"appStore",
|
|
"collectionStore",
|
|
"routerHook",
|
|
"toaster"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/ValveSoftware/SteamOS",
|
|
"https://github.com/santojon/Deck-Shelves",
|
|
"https://github.com/santojon/Deck-Shelves.git",
|
|
"https://github.com/sponsors/santojon"
|
|
],
|
|
"status": "partial",
|
|
"reason": "The exact chunked frontend now initializes and renders Deck Shelves settings in an opaque local Chromium panel. Backend calls were denied; Home-screen shelf injection has no verified Steam UI target in Framey. Settings writes, real backend behavior and worn VR are unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 135,
|
|
"name": "Deck Shelves",
|
|
"ready": false,
|
|
"error": "Failed to resolve module specifier \"./chunks/pluginApi-B8sV7970.js\". Invalid relative url or base scheme isn't hierarchical.",
|
|
"logs": [],
|
|
"methods": []
|
|
},
|
|
"archiveValidation": {
|
|
"id": 135,
|
|
"accepted": true,
|
|
"folder": "Deck-Shelves"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"QAM/global tabs",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 135,
|
|
"sha256": "b566280ad38fd3ecd584b5b46a855f301539eb9a86063834c64b7045f7063f91",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"chunkedFollowUp": {
|
|
"evidence": "docs/evidence/framey-deck-shelves-browser-2026-10-26.md",
|
|
"mode": "exact archive in opaque local Chromium; backend and network denied",
|
|
"frontendReady": true,
|
|
"settingsRendered": true
|
|
}
|
|
},
|
|
{
|
|
"id": 136,
|
|
"name": "Decky-Clipper",
|
|
"version": "1.0.2",
|
|
"sha256": "31d4d66032eb778140b96c0b27e53cb5e969395bca6ffc288b1fa283ecfb2401",
|
|
"tags": [],
|
|
"folder": "Decky-Clipper",
|
|
"archiveBytes": 4009837,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"Decky-Clipper/main.py"
|
|
],
|
|
"native": [
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstproxy.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstmidi.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstmpegtsmux.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/gst-plugin-scanner",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstivfparse.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudiovisualizers.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstspeed.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstpnm.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstfaceoverlay.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaccurip.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstrawparse.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvideotestsrc.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstivtc.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstcodectimestamper.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstxvimagesink.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgsttranscode.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstremovesilence.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgsttypefindfunctions.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstasfmux.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstinsertbin.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstplayback.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstwaylandsink.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstjpegformat.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstbayer.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstnice.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstinter.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstbluez.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/gst-ptp-helper",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstfbdevsink.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstdvbsubenc.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaiff.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstfrei0r.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstdecklink.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstva.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvideoconvertscale.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstmpegpsdemux.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgsttcp.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstdvb.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstmpegpsmux.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstdvdspu.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstadpcmenc.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudiomixmatrix.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstdsd.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstshm.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstadder.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstcoretracers.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstipcpipeline.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvulkan.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstsubparse.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstfieldanalysis.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudioconvert.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstsubenc.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstcoloreffects.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstadpcmdec.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstsmooth.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvideosignal.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvolume.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstuvch264.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvideoframe_audiolevel.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstrtponvif.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudiofxbad.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstximagesink.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstcompositor.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvideoparsersbad.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstapp.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvideorate.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstinterlace.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudiotestsrc.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstnetsim.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstsiren.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstmpegtsdemux.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudiorate.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/gst-hotdoc-plugins-scanner",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstlegacyrawparse.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstoverlaycomposition.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvideofiltersbad.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstgio.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstmxf.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstcoreelements.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstv4l2codecs.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstpbtypes.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstid3tag.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstsdpelem.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstgaudieffects.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvmnc.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstautoconvert.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstnvcodec.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstrtmp2.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstgdp.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstuvcgadget.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstmse.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstpcapparse.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudiobuffersplit.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstdvbsuboverlay.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstrtpmanagerbad.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstcamerabin.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstswitchbin.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudiomixer.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstbasedebug.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgsty4mdec.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstrfbsrc.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstfreeverb.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/gst-completion-helper",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstjp2kdecimator.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstrist.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstunixfd.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstkms.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstgeometrictransform.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstencoding.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudiolatency.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstdebugutilsbad.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstfestival.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstcodecalpha.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudioresample.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
},
|
|
{
|
|
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstsegmentclip.so",
|
|
"elfMachine": 62,
|
|
"arch": "x86_64"
|
|
}
|
|
],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ModalRoot",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"Router",
|
|
"ToggleField",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"Router"
|
|
],
|
|
"hardwareSignals": [
|
|
"gamescope"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/Managor/Decky-Clipper",
|
|
"https://github.com/Managor/Decky-Clipper.git",
|
|
"https://github.com/SDH-Stewardship/decky-recorder-fork"
|
|
],
|
|
"status": "broken",
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: Decky-Clipper/bin/gstreamer-1.0/libgstproxy.so.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 136,
|
|
"name": "Decky-Clipper",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"is_recording"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 136,
|
|
"accepted": false,
|
|
"reason": "Plugin contains a non-ARM64 Linux binary: Decky-Clipper/bin/gstreamer-1.0/libgstproxy.so"
|
|
},
|
|
"backend": "Python + native payload",
|
|
"hardware": "gamescope",
|
|
"nativePort": "Rebuild all bundled GStreamer libraries/plugins for ARM64 and verify capture/codec ABI against Frame SteamVR; gamescope capture differs.",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 136,
|
|
"sha256": "31d4d66032eb778140b96c0b27e53cb5e969395bca6ffc288b1fa283ecfb2401",
|
|
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: Decky-Clipper/bin/gstreamer-1.0/libgstproxy.so",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: Decky-Clipper/bin/gstreamer-1.0/libgstproxy.so."
|
|
}
|
|
},
|
|
{
|
|
"id": 137,
|
|
"name": "Decky Proton Launch",
|
|
"version": "0.9.0",
|
|
"sha256": "e7b98a7ca8817ef08584ed0828eee8702631af33daccc229075a012eca91f731",
|
|
"tags": [
|
|
"command",
|
|
"launch",
|
|
"proton"
|
|
],
|
|
"folder": "decky-proton-launch",
|
|
"archiveBytes": 987713,
|
|
"api": 1,
|
|
"flags": [
|
|
"debug"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-proton-launch/main.py",
|
|
"decky-proton-launch/py_modules/proton_launch/steam.py",
|
|
"decky-proton-launch/py_modules/proton_launch/image.py",
|
|
"decky-proton-launch/py_modules/proton_launch/vdf.py",
|
|
"decky-proton-launch/py_modules/proton_launch/launch_option.py",
|
|
"decky-proton-launch/py_modules/proton_launch/profile.py",
|
|
"decky-proton-launch/py_modules/proton_launch/__init__.py",
|
|
"decky-proton-launch/py_modules/proton_launch/plugin.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Apps.RegisterForAppDetails",
|
|
"Apps.SetAppLaunchOptions",
|
|
"User.StartRestart"
|
|
],
|
|
"dfl": [
|
|
"ConfirmModal",
|
|
"DialogButton",
|
|
"DropdownItem",
|
|
"Focusable",
|
|
"GamepadButton",
|
|
"ModalRoot",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"TextField",
|
|
"ToggleField",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"toaster"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-plugin-template",
|
|
"https://github.com/SteamDeckHomebrew/decky-plugin-template.git",
|
|
"https://github.com/moi952/decky-proton-launch",
|
|
"https://github.com/moi952/decky-proton-launch.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; Proton wrapper installation and launch changes were not run.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 137,
|
|
"name": "Decky Proton Launch",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_games",
|
|
"get_configured_apps_status",
|
|
"is_script_installed",
|
|
"get_wrapper_app_ids",
|
|
"get_running_game",
|
|
"get_variables_cache"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 137,
|
|
"accepted": true,
|
|
"folder": "decky-proton-launch"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"toasts",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 137,
|
|
"sha256": "e7b98a7ca8817ef08584ed0828eee8702631af33daccc229075a012eca91f731",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
}
|
|
},
|
|
{
|
|
"id": 138,
|
|
"name": "Docky",
|
|
"version": "1.4.13",
|
|
"sha256": "c4f9760724bfdae0581a64252a9504c225f0f9a7fc378b2ade1891e2755aae01",
|
|
"tags": [
|
|
"automation",
|
|
"dock",
|
|
"streaming",
|
|
"sunshine",
|
|
"triggers"
|
|
],
|
|
"folder": "Docky",
|
|
"archiveBytes": 110404,
|
|
"api": "legacy",
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": false,
|
|
"frontend": true,
|
|
"frontendApi": "legacy",
|
|
"pythonFiles": [
|
|
"Docky/main.py",
|
|
"Docky/py_modules/padswap.py",
|
|
"Docky/py_modules/deckops.py",
|
|
"Docky/py_modules/sysenv.py",
|
|
"Docky/py_modules/docky.py",
|
|
"Docky/py_modules/sunshine.py",
|
|
"Docky/py_modules/mdns.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogButton",
|
|
"DropdownItem",
|
|
"Field",
|
|
"Focusable",
|
|
"ModalRoot",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"TextField",
|
|
"ToggleField",
|
|
"definePlugin",
|
|
"showModal"
|
|
],
|
|
"globals": [
|
|
"toaster",
|
|
"window.SP_REACT"
|
|
],
|
|
"hardwareSignals": [
|
|
"/sys/bus/usb/devices/",
|
|
"/sys/bus/usb/devices/*",
|
|
"/sys/bus/usb/drivers/usb/",
|
|
"/sys/bus/usb/drivers/usb/%s",
|
|
"/sys/class/drm/*/status",
|
|
"/sys/class/drm/card*-*/",
|
|
"/sys/class/hwmon/hwmon*",
|
|
"/sys/class/hwmon/hwmonN",
|
|
"/sys/class/power_supply/*/online",
|
|
"/sys/class/thermal",
|
|
"/sys/class/thermal/thermal_zone*/temp",
|
|
"amdgpu",
|
|
"flatpak",
|
|
"gamescope",
|
|
"hwmon",
|
|
"pactl",
|
|
"sudo",
|
|
"systemctl"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/LizardByte/Sunshine",
|
|
"https://github.com/datbird/docky",
|
|
"https://github.com/datbird/docky.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 138,
|
|
"name": "Docky",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_state"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 138,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "/sys/bus/usb/devices/; /sys/bus/usb/devices/*; /sys/bus/usb/drivers/usb/; /sys/bus/usb/drivers/usb/%s; /sys/class/drm/*/status; /sys/class/drm/card*-*/; /sys/class/hwmon/hwmon*; /sys/class/hwmon/hwmonN; /sys/class/power_supply/*/online; /sys/class/thermal; /sys/class/thermal/thermal_zone*/temp; amdgpu; flatpak; gamescope; hwmon; pactl; sudo; systemctl",
|
|
"uiSurfaces": [
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 138,
|
|
"sha256": "c4f9760724bfdae0581a64252a9504c225f0f9a7fc378b2ade1891e2755aae01",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service."
|
|
}
|
|
},
|
|
{
|
|
"id": 139,
|
|
"name": "Output Manager",
|
|
"version": "1.4.0",
|
|
"sha256": "a13202785b57a91462c431bb14c3fbdcbabab00822a197ea592bc375f20a9972",
|
|
"tags": [
|
|
"audio",
|
|
"display",
|
|
"outputs",
|
|
"utility"
|
|
],
|
|
"folder": "output-manager",
|
|
"archiveBytes": 2499434,
|
|
"api": 1,
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"output-manager/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"Navigation",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"TextField",
|
|
"ToggleField",
|
|
"staticClasses"
|
|
],
|
|
"globals": [],
|
|
"hardwareSignals": [
|
|
"/sys/class/drm",
|
|
"/sys/class/drm/card{card_number}/device",
|
|
"/sys/kernel/debug/dri",
|
|
"pactl"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/joeatethebeans/OutputManager"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 139,
|
|
"name": "Output Manager",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_state",
|
|
"get_config"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 139,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "/sys/class/drm; /sys/class/drm/card{card_number}/device; /sys/kernel/debug/dri; pactl",
|
|
"uiSurfaces": [],
|
|
"fakeFrame": {
|
|
"id": 139,
|
|
"sha256": "a13202785b57a91462c431bb14c3fbdcbabab00822a197ea592bc375f20a9972",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service."
|
|
}
|
|
},
|
|
{
|
|
"id": 140,
|
|
"name": "IPv6 Enabler Plugin",
|
|
"version": "0.0.1",
|
|
"sha256": "0198bdc752ff001ee704a85b15b4d5ad40cf03bdafd0fce67e3c21f01654e36f",
|
|
"tags": [
|
|
"ipv6",
|
|
"networking",
|
|
"root"
|
|
],
|
|
"folder": "decky-ipv6",
|
|
"archiveBytes": 446886,
|
|
"api": 1,
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-ipv6/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"DropdownItem",
|
|
"Field",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"toaster"
|
|
],
|
|
"hardwareSignals": [
|
|
"/sys/net/ipv6/conf"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-loader",
|
|
"https://github.com/SteamDeckHomebrew/decky-plugin-template",
|
|
"https://github.com/spmzt/decky-ipv6",
|
|
"https://github.com/spmzt/decky-ipv6.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 140,
|
|
"name": "IPv6 Enabler Plugin",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_status"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 140,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "/sys/net/ipv6/conf",
|
|
"uiSurfaces": [
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 140,
|
|
"sha256": "0198bdc752ff001ee704a85b15b4d5ad40cf03bdafd0fce67e3c21f01654e36f",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: Root plugins are not supported by the Frame user service"
|
|
}
|
|
},
|
|
{
|
|
"id": 141,
|
|
"name": "DeckyClocker",
|
|
"version": "1.0.0",
|
|
"sha256": "02a08172c878e9fe92c090df07b271190cc3f7d2b2330d05eedb027122fc7b32",
|
|
"tags": [
|
|
"utility"
|
|
],
|
|
"folder": "DeckyClocker",
|
|
"archiveBytes": 329508,
|
|
"api": 1,
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"DeckyClocker/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"Field",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"SliderField"
|
|
],
|
|
"globals": [
|
|
"toaster"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/Jaccident/DeckyClocker",
|
|
"https://github.com/Jaccident/DeckyClocker.git"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 141,
|
|
"name": "DeckyClocker",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [],
|
|
"methods": [
|
|
"get_status"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 141,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 141,
|
|
"sha256": "02a08172c878e9fe92c090df07b271190cc3f7d2b2330d05eedb027122fc7b32",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service."
|
|
}
|
|
},
|
|
{
|
|
"id": 142,
|
|
"name": "MuteOnSleep",
|
|
"version": "1.0.1",
|
|
"sha256": "4df068dc0b479a4028c3270bec544dadafe3dea63455ce05926c8dc183350ff9",
|
|
"tags": [
|
|
"audio",
|
|
"utility"
|
|
],
|
|
"folder": "MuteOnSleep",
|
|
"archiveBytes": 441125,
|
|
"api": 1,
|
|
"flags": [
|
|
"_root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"MuteOnSleep/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"ToggleField"
|
|
],
|
|
"globals": [],
|
|
"hardwareSignals": [
|
|
"pactl",
|
|
"sudo"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/genc-v/mute-on-sleep"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 142,
|
|
"name": "MuteOnSleep",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "[MuteOnSleep] failed to register suspend hook: ReferenceError: SuspendResumeStore is not defined"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_enabled"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 142,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "pactl; sudo",
|
|
"uiSurfaces": [
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 142,
|
|
"sha256": "4df068dc0b479a4028c3270bec544dadafe3dea63455ce05926c8dc183350ff9",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service."
|
|
}
|
|
},
|
|
{
|
|
"id": 143,
|
|
"name": "Desktop Apps",
|
|
"version": "0.1.0",
|
|
"sha256": "33fb674993c9b2bd119f0c6118c465e379f166ec1539c8183fcf7580f1d89577",
|
|
"tags": [
|
|
"applications",
|
|
"apps",
|
|
"desktop",
|
|
"flatpak"
|
|
],
|
|
"folder": "decky-desktop-apps",
|
|
"archiveBytes": 723400,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-desktop-apps/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Apps.AddShortcut",
|
|
"Apps.RemoveShortcut",
|
|
"Apps.RunGame",
|
|
"Apps.SetShortcutExe",
|
|
"Apps.SetShortcutLaunchOptions",
|
|
"Apps.SetShortcutName",
|
|
"Apps.SetShortcutStartDir",
|
|
"GameSessions.RegisterForAppLifetimeNotifications"
|
|
],
|
|
"dfl": [
|
|
"DialogButton",
|
|
"Focusable",
|
|
"Menu",
|
|
"MenuItem",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"showContextMenu",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"appStore",
|
|
"toaster"
|
|
],
|
|
"hardwareSignals": [
|
|
"flatpak"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/SteamDeckHomebrew/decky-plugin-template",
|
|
"https://github.com/allmazz/decky-desktop-apps",
|
|
"https://github.com/allmazz/decky-desktop-apps.git"
|
|
],
|
|
"status": "partial",
|
|
"reason": "Initializer succeeds; Flatpak app discovery and Steam shortcut changes unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 143,
|
|
"name": "Desktop Apps",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "%c @decky/ui %c DesktopApps %c background: #16a085; color: black; background: #FF0000; background: transparent; Failed to fetch apps Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_temporary_shortcuts",
|
|
"get_apps"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 143,
|
|
"accepted": true,
|
|
"folder": "decky-desktop-apps"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "flatpak",
|
|
"uiSurfaces": [
|
|
"toasts",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 143,
|
|
"sha256": "33fb674993c9b2bd119f0c6118c465e379f166ec1539c8183fcf7580f1d89577",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"runningFollowUp": {
|
|
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
|
|
"mode": "synthetic nonempty running/library replay; backend and network denied",
|
|
"frontendReady": true
|
|
}
|
|
},
|
|
{
|
|
"id": 144,
|
|
"name": "Mixer",
|
|
"version": "0.1.0",
|
|
"sha256": "4b3546170e5fbd5f9afad3b24555498ee51caac7cec9e4c86321b18cdd4b5106",
|
|
"tags": [
|
|
"audio",
|
|
"bluetooth",
|
|
"media"
|
|
],
|
|
"folder": "decky-volume-mixer",
|
|
"archiveBytes": 754914,
|
|
"api": 1,
|
|
"flags": [],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"decky-volume-mixer/main.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"ConfirmModal",
|
|
"DialogButton",
|
|
"Focusable",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"SliderField",
|
|
"TextField",
|
|
"showModal",
|
|
"staticClasses"
|
|
],
|
|
"globals": [
|
|
"toaster"
|
|
],
|
|
"hardwareSignals": [
|
|
"flatpak"
|
|
],
|
|
"sourceURLs": [
|
|
"https://github.com/allmazz/decky-volume-mixer",
|
|
"https://github.com/allmazz/decky-volume-mixer.git"
|
|
],
|
|
"status": "works",
|
|
"reason": "Per-app discovery and numeric volume changes pass in local Chromium through real Decky 3.3.0 ARM64 on the Frame audio session, independently read back on a silent test stream. Filters persist on amd64; ARM64 filter persistence, Reset, internal audio nodes, audible output and worn VR unverified.",
|
|
"blockInstall": false,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame",
|
|
"isolated Linux backend",
|
|
"real Frame SSH"
|
|
],
|
|
"browser": {
|
|
"id": 144,
|
|
"name": "Mixer",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "error",
|
|
"message": "Error: Read-only compatibility audit: backend method blocked"
|
|
},
|
|
{
|
|
"kind": "error",
|
|
"message": "Error: Read-only compatibility audit: backend method blocked"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_settings",
|
|
"get_playbacks"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 144,
|
|
"accepted": true,
|
|
"folder": "decky-volume-mixer"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "PipeWire, pw-dump and wpctl",
|
|
"uiSurfaces": [
|
|
"toasts"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 144,
|
|
"sha256": "4b3546170e5fbd5f9afad3b24555498ee51caac7cec9e4c86321b18cdd4b5106",
|
|
"archiveValidation": "accepted",
|
|
"result": "installed-removed"
|
|
},
|
|
"localBackend": {
|
|
"runtime": "Decky 3.3.0 amd64",
|
|
"evidence": "docs/evidence/framey-audio-backends-2026-10-26.json",
|
|
"audio": "private silent virtual targets",
|
|
"realFrame": false
|
|
}
|
|
},
|
|
{
|
|
"id": 145,
|
|
"name": "VARTA",
|
|
"version": "1.0.21",
|
|
"sha256": "7c01464c55d895651295b7fae9b6258ddf570bc84ab3265fe9582102b43fa400",
|
|
"tags": [
|
|
"library",
|
|
"steam",
|
|
"ukraine"
|
|
],
|
|
"folder": "varta",
|
|
"archiveBytes": 1061452,
|
|
"api": 1,
|
|
"flags": [
|
|
"root"
|
|
],
|
|
"modernBridge": true,
|
|
"frontend": true,
|
|
"frontendApi": "2",
|
|
"pythonFiles": [
|
|
"varta/main.py",
|
|
"varta/py_modules/extensions/varta.py",
|
|
"varta/py_modules/extensions/prystanok.py",
|
|
"varta/py_modules/extensions/base.py",
|
|
"varta/py_modules/extensions/__init__.py"
|
|
],
|
|
"native": [],
|
|
"steamClient": [
|
|
"Store.SetWishlist",
|
|
"StoreItems.SetWishlist",
|
|
"User",
|
|
"User.GetSteamID"
|
|
],
|
|
"dfl": [
|
|
"ButtonItem",
|
|
"DropdownItem",
|
|
"Field",
|
|
"PanelSection",
|
|
"PanelSectionRow",
|
|
"Spinner",
|
|
"ToggleField",
|
|
"afterPatch",
|
|
"appDetailsClasses",
|
|
"beforePatch",
|
|
"createReactTreePatcher",
|
|
"findInReactTree",
|
|
"findModule",
|
|
"findModuleByExport",
|
|
"findModuleExport",
|
|
"staticClasses",
|
|
"useParams"
|
|
],
|
|
"globals": [
|
|
"routerHook",
|
|
"toaster"
|
|
],
|
|
"hardwareSignals": [],
|
|
"sourceURLs": [
|
|
"https://github.com/HARd/varta-decky",
|
|
"https://github.com/Ka3u6y6a/decky-prystanok"
|
|
],
|
|
"status": "broken",
|
|
"reason": "This plugin needs root and is not supported by the Frame user service.",
|
|
"blockInstall": true,
|
|
"verification": [
|
|
"static archive",
|
|
"local browser",
|
|
"fake-Frame"
|
|
],
|
|
"browser": {
|
|
"id": 145,
|
|
"name": "VARTA",
|
|
"ready": true,
|
|
"error": null,
|
|
"logs": [
|
|
{
|
|
"kind": "warn",
|
|
"message": "[VARTA] library tile component not found, grid badges disabled"
|
|
}
|
|
],
|
|
"methods": [
|
|
"get_settings",
|
|
"get_database_stats",
|
|
"get_update_status"
|
|
]
|
|
},
|
|
"archiveValidation": {
|
|
"id": 145,
|
|
"accepted": false,
|
|
"reason": "This plugin needs root and is not supported by the Frame user service"
|
|
},
|
|
"backend": "Python",
|
|
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
|
|
"uiSurfaces": [
|
|
"local/Steam routes",
|
|
"toasts",
|
|
"Steam page patches/module lookup",
|
|
"Steam stores"
|
|
],
|
|
"fakeFrame": {
|
|
"id": 145,
|
|
"sha256": "7c01464c55d895651295b7fae9b6258ddf570bc84ab3265fe9582102b43fa400",
|
|
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
|
|
"result": "blocked",
|
|
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service."
|
|
}
|
|
}
|
|
],
|
|
"fakeFrameMethod": "116 exact archives validated and attempted through real HTTP/SSH in private disposable fake Frame; 60 installed, frontend bytes/receipt checked, then removed; 56 rejected. Official backend code never executed.",
|
|
"realFrameMethod": "2026-10-25: shared lock held; isolated temporary Decky 3.3.0 ARM64 user service with only exact ProtonDB/Steam Status backends; read-only settings RPCs succeeded via existing Steam CEF websocket. Temporary service/base removed and lock released; battery 100 to 99; no power settings changed. No official plugin panel was opened in VR. Follow-up 2026-10-26: safe isolated Notebook draw/save/reopen and Simple Timer event/start/cancel/persistence checks; see docs/evidence/framey-events-backend-2026-10-26.json."
|
|
}
|