FramePort 0.7.0

This commit is contained in:
spoopyghosty0 committed 2026-10-04 17:08:34 -04:00
1 parent 7afee4bf59
commit dbabb37343
5 files changed
+26 -4

No files matched your search

+4 -1
View File
@@ -464,7 +464,10 @@ Lepton's Android 11 has no clipboard service (134 services; checked with `podman
SDL/LÖVE apps crashed at start → `frame.sdl_clipboard` (`apk/dex.py`: in-place dex edit, nops one invoke, fixes
the header checksum/signature; verified with LÖVE for Android 11.5, GitHub #24 Dramatic Shape). 2D apps (vr_kind none)
keep every suggested patch that isn't about VR (`needs_vr = False`), not a fixed list. FramePort on the Frame:
`frame/local.py` (127.0.0.1, own key authorized) and Steam library changes wait while Desktop Mode is open.
`frame/local.py` (127.0.0.1, own key authorized; "This Frame (experimental)"; app data in
~/.local/share/frameport-app because ~/.local/share/frameport is the agent's) and Steam library changes wait while
Desktop Mode is open. Verified on the device 2026-10-04 (install + launch test from the Frame). Library updates on the
Frame run one at a time (agent v40 flock): two quick uninstalls used to bring a removed shortcut back (Roblox).
Headset round 3 (owner's verdicts, 2026-10-04): Blade & Sorcery works — its freezes were the headset's wear sensor
flickering off while worn (vrserver.txt "HMD off/on" 0.5-2 s) → per-game `focus_hold_ms=2500` (only this game reacts;
not a default). BattleGlide works (focus_hold). Myst works with issues (object glitches; space warp ruled out, its
+12 -1
View File
@@ -35,7 +35,7 @@ import sys
import time
import zlib
AGENT_VERSION = 39
AGENT_VERSION = 40
HOME = os.path.expanduser("~")
STEAM = os.path.join(HOME, ".local/share/Steam")
ANCHORS = os.path.join(HOME, "Applications/quest-frame")
@@ -1041,6 +1041,17 @@ def game_running():
def shortcuts_worker(payload):
"""One library update at a time: two at once each read shortcuts.vdf, changed it and wrote it back, so the second
write brought back a shortcut the first had removed (uninstalling two games quickly left Roblox in Steam)."""
import fcntl
os.makedirs(os.path.dirname(STATUS_FILE), exist_ok=True)
with open(STATUS_FILE + ".lock", "w") as lock:
fcntl.flock(lock, fcntl.LOCK_EX)
_shortcuts_worker(payload)
def _shortcuts_worker(payload):
args = json.loads(payload)
result = {"state": "done", "added": [], "errors": [], "finished": None}
os.makedirs(os.path.dirname(STATUS_FILE), exist_ok=True)
+8
View File
@@ -54,6 +54,14 @@ Lepton from the Steam Frame page afterwards if it's missing.
If the setup command only says "timed out", a firewall on your computer blocks the Frame; the setup page
says which after about 45 seconds. Details per system: [FRAME_SETUP.md](FRAME_SETUP.md#network-and-firewalls).
## Running FramePort on the Frame (experimental)
FramePort can run on the Steam Frame itself, without a PC: in **Desktop Mode**, download
`FramePort-linux-arm64.tar.gz`, unpack it (`tar xzf FramePort-linux-arm64.tar.gz`) and start `FramePort/FramePort`.
Turn on **Developer Mode** first (Steam → Settings → System); FramePort then manages "This Frame" directly, with
no pairing. Games are added to the Steam library when you go back to **Gaming Mode** (Steam has to restart for it,
which would end Desktop Mode). This is new: please report anything odd with **Report a problem**.
## Installing games
- **Install on Frame** on a game's page (or select several in the Library and install them together). Installs run
+1 -1
View File
@@ -1,2 +1,2 @@
# The FramePort version: the single source (pyproject reads it via hatch; CI checks a release tag matches it).
__version__ = "0.6.3"
__version__ = "0.7.0"
+1 -1
View File
@@ -9,7 +9,7 @@ import os
import platform
from pathlib import Path
LOCAL_NAME = "This Frame"
LOCAL_NAME = "This Frame (experimental)" # FramePort running on the Frame itself
@functools.lru_cache(maxsize=1)