mirror of
https://github.com/saphid/frame-control.git
synced 2026-10-29 04:02:36 +01:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
89e5ee610d | ||
|
|
2b8836929e | ||
|
|
248e5b3382 | ||
|
|
3dcba52e91 | ||
|
|
efda14776d |
No files matched your search
@@ -181,7 +181,6 @@ old="$stage/old.app"
|
||||
if mv "$app" "$old"; then
|
||||
if mv "$new" "$app"; then rm -rf "$old"; else mv "$old" "$app"; fi
|
||||
fi
|
||||
xattr -dr com.apple.quarantine "$app" 2>/dev/null
|
||||
rm -rf "$stage"
|
||||
open "$app"
|
||||
`;
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
# Free Loader 1.6.0: private Decky backend check
|
||||
|
||||
The official store archive for ID 63 was downloaded and matched SHA-256
|
||||
`05208aee6f6ba824391d8ddc81b1168b2599a9711e7528cdaa789f6cc710b42a`.
|
||||
The published Decky 3.3.0 amd64 loader matched SHA-256
|
||||
`e80d03e641d1766a33a817cb27ab8d2e0a4633685e5d27e4de948a6687526181`.
|
||||
|
||||
An unprivileged, disposable Debian container ran that loader and the exact
|
||||
official plugin with no network, host devices, host session or writable host
|
||||
mount. Decky discovered Free Loader as enabled. Its API 1 methods returned 14
|
||||
default settings and an empty local deals map. A private `larger_text` setting
|
||||
changed to `true` and read back; startup created only the container's private
|
||||
settings file, and `read_deals` created an empty private deals cache. No feed,
|
||||
notification, Steam store or external account method was called. The local
|
||||
probe exited successfully; its container was removed. The committed native
|
||||
Decky runtime case repeats these calls and also checks persistence after a
|
||||
loader restart on the CI runner's native architecture. The local x86_64 run
|
||||
passed all 14 runtime cases, including Free Loader and the existing negative
|
||||
regressions. The runner removed its temporary containers and image.
|
||||
|
||||
This strengthens the **partial** label. It does not verify a live feed refresh,
|
||||
notification delivery, real Frame ARM64 service, rendered deal cards, worn VR
|
||||
or controller interaction. The earlier opaque Chromium check had denied backend
|
||||
and network calls, so it could not establish that deal cards render with live
|
||||
data. No headset was touched for this check.
|
||||
@@ -81,7 +81,7 @@ The API column shows manifest / actual bundled frontend API. Many manifests say
|
||||
| 60: DeckyFileServer 1.2.0 | 1 / 2 | partial | Managed install supplies a native ARM64 helper and removes the exact archive's unnecessary root request. Real Decky 3.3.0 on Frame passes private read-only HTTPS listing/download and upload denial. Frontend address/picker limitations remain; use HTTPS and a preconfigured directory. Uploads, generated thumbnails and worn VR are unverified. Shared Toggle value rendering is repaired; other listed blockers remain. | static archive, local browser, fake-Frame, real Decky 3.3.0 amd64, real Frame SSH |
|
||||
| 61: TabMaster 2.15.1 | 1 / 2 | partial | 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. | static archive, local browser, fake-Frame |
|
||||
| 62: TS3 QuickAccess 1.2.0 | legacy / legacy | broken | Plugin contains a non-ARM64 Linux binary: ts3-qs4sd/bin/ts3-qs4sd.so. | static archive, local browser, fake-Frame |
|
||||
| 63: Free Loader 1.6.0 | 1 / 2 | partial | The exact archive's duplicate names contain identical bytes and differ only in execute bits; the guarded installer now accepts them, and a private local install/remove transaction passed. The current opaque Chromium host renders Free Games but cannot load deals with backend/network denied. Exact official Python settings and empty local-deals methods passed in a no-network container with a Decky stub. Real Decky, feed refresh, notifications and worn VR remain unverified. | static archive, local browser, fake-Frame pinned install/remove, local exact-archive transaction, isolated Python backend |
|
||||
| 63: Free Loader 1.6.0 | 1 / 2 | partial | The exact archive's byte-identical duplicate ZIP members pass guarded install/remove. Actual Decky 3.3.0 in a private network-isolated container discovers the plugin, reads default settings and empty local deals, and retains a settings change after restart. Live deal-feed refresh, notifications, Steam store integration, real Frame ARM64 service and worn VR remain unverified; no feed request was made. | static archive, local browser, fake-Frame pinned install/remove, local exact-archive transaction, isolated Python backend, isolated Linux backend |
|
||||
| 64: Syncthing 0.2.7 | legacy / legacy | broken | Plugin contains a non-ARM64 Linux binary: decky-syncthing/bin/decky-syncthing-watchdog. Shared Toggle value rendering is repaired; other listed blockers remain. | static archive, local browser, fake-Frame |
|
||||
| 65: Decky Terminal 0.5.3 | 1 / 2 | partial | Local routes initialize after parameter-route support; no shell commands were run. | static archive, local browser, fake-Frame |
|
||||
| 66: PlayTime 3.2.5 | 1 / 2 | partial | 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. | static archive, local browser, fake-Frame, real Frame SSH |
|
||||
|
||||
@@ -14,6 +14,11 @@
|
||||
"shim": null,
|
||||
"probe": "toggle-settings"
|
||||
},
|
||||
{
|
||||
"id": 63,
|
||||
"shim": null,
|
||||
"probe": "free-loader"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"shim": "music-control-system-dbus-env",
|
||||
|
||||
@@ -240,6 +240,30 @@ def main():
|
||||
report['result'] = ('original empty argument bug reproduced: thumbnail policy ignored'
|
||||
if args.reproduce_fileserver_empty_flag_regression else
|
||||
'discovery, API1 settings, native HTTPS listing/download, thumbnail policy and stop passed; uploads disabled')
|
||||
elif case['probe'] == 'free-loader':
|
||||
settings = current('settings_read')
|
||||
assert settings['notify_on_free_games'] is True, settings
|
||||
assert settings['larger_text'] is False, settings
|
||||
assert current('read_deals') == {}
|
||||
# This plugin commits defaults on startup and writes an empty
|
||||
# deals cache on first read. Both paths are private to this
|
||||
# disposable container; no feed, notification or store call.
|
||||
settings_dir = base/'settings'/record['folder']
|
||||
assert (settings_dir/'settings.json').is_file()
|
||||
assert (settings_dir/'deal_db.json').is_file()
|
||||
current('settings_setSetting', 'larger_text', True)
|
||||
assert current('settings_read')['larger_text'] is True
|
||||
os.killpg(backend.pid, signal.SIGTERM)
|
||||
backend.wait(timeout=8)
|
||||
backend = subprocess.Popen([str(loader)], env=env, stdout=log, stderr=log,
|
||||
start_new_session=True)
|
||||
processes.append(backend)
|
||||
until_ready(lambda: rpc('loader/get_plugins'), 'restarted Decky discovery')
|
||||
assert until_ready(lambda: current('settings_read')['larger_text'],
|
||||
'private Free Loader setting after restart') is True
|
||||
assert current('read_deals') == {}
|
||||
report['result'] = ('discovery, default settings, empty local deals, '
|
||||
'private setting write/read and restart persistence passed; feed, notifications and VR unverified')
|
||||
elif case['probe'] == 'toggle-settings':
|
||||
def call(method, *values):
|
||||
result = rpc('loader/call_plugin_method', record['name'], method, *values)
|
||||
|
||||
@@ -21,7 +21,7 @@ class RuntimeCoverage(unittest.TestCase):
|
||||
self.assertIn(case['id'], official)
|
||||
self.assertIn(case['probe'], ('mpris', 'screenshots', 'system-monitor', 'timer-lifecycle',
|
||||
'toggle-settings', 'fileserver', 'localsend', 'network-sentinel',
|
||||
'battery-tracker'))
|
||||
'battery-tracker', 'free-loader'))
|
||||
|
||||
def test_new_shim_without_runtime_case_fails_coverage(self):
|
||||
import frame_decky_store
|
||||
|
||||
@@ -4703,14 +4703,15 @@
|
||||
"https://github.com/jwhitlow45/free-loader.git"
|
||||
],
|
||||
"status": "partial",
|
||||
"reason": "The exact archive's duplicate names contain identical bytes and differ only in execute bits; the guarded installer now accepts them, and a private local install/remove transaction passed. The current opaque Chromium host renders Free Games but cannot load deals with backend/network denied. Exact official Python settings and empty local-deals methods passed in a no-network container with a Decky stub. Real Decky, feed refresh, notifications and worn VR remain unverified.",
|
||||
"reason": "The exact archive's byte-identical duplicate ZIP members pass guarded install/remove. Actual Decky 3.3.0 in a private network-isolated container discovers the plugin, reads default settings and empty local deals, and retains a settings change after restart. Live deal-feed refresh, notifications, Steam store integration, real Frame ARM64 service and worn VR remain unverified; no feed request was made.",
|
||||
"blockInstall": false,
|
||||
"verification": [
|
||||
"static archive",
|
||||
"local browser",
|
||||
"fake-Frame pinned install/remove",
|
||||
"local exact-archive transaction",
|
||||
"isolated Python backend"
|
||||
"isolated Python backend",
|
||||
"isolated Linux backend"
|
||||
],
|
||||
"browser": {
|
||||
"id": 63,
|
||||
|
||||
Reference in new issue
Block a user