Commit Graph
8 Commits
Author SHA1 Message Date
spoopyghosty0 456880501b PC VR: a catalog recipe verified with another build (different VR APIs) keeps the build's own launch arguments; Electron launchers rank below the game; agent v67 collects Unity's Player.log / output_log.txt / crash error.log for launch tests and diagnostics; triage unity-vr-init and unity-crash (GitHub #105) 2026-10-09 10:10:33 -04:00
spoopyghosty0 b8e49a3419 No release-group names in the code: release tags are recognised by their form (trailing ' -TAG', [..] notes), same titles for every real folder; OVRPort spelled consistently in user-visible texts (patch titles from OVRPort's strings only for patches FramePort doesn't describe) 2026-10-02 18:12:38 -04:00
spoopyghosty0 23a47880e0 Lines within 120 columns everywhere (CI lints without exceptions); community and licence files; docs updated
- reflowed long lines (texts unchanged; generated launcher/PowerShell/README texts byte-identical)
- CONTRIBUTING, SECURITY, CODE_OF_CONDUCT, THIRD_PARTY_NOTICES; pyproject metadata (SPDX licence, authors, urls,
  classifiers, keywords)
- maintainer-only notes moved to a git-ignored CLAUDE.local.md; CLAUDE.md facts updated
- README: what kinds of apps run and how; INSTALL: PC VR and Files wording, new labels
2026-10-02 14:18:41 -04:00
spoopyghosty0 60efbbe7a9 Tooling: ruff (lint + import order) and pytest-timeout; CI lints and tests every push to main
Fixes ruff found: loop variables bound in callbacks, zip(strict=True), clearer names than 'l', unused loop
variables, f-strings instead of % formatting.
2026-10-02 13:19:11 -04:00
spoopyghosty0 428e8ffe05 Quest binary fixes, PC VR launch modes + SteamVR tuning, file sending, GUI scaling
Quest (Frame):
- frame.swapchain_limit (default on): overport's dispatcher aborted on swapchains
  > 4096 px (4XVR's 7680x3840 theatre textures); guard raised to 16384.
- frame.vk_sanitize (default on, Unreal): Vulkan shim (native/vkshim) that drops
  invalid render-pass pNext pointers; Lepton's Fossilize layer crashed Deadpool VR on them.
- FrameBridge: cylinder layers (curved menus / movie screens) shown as flat quad
  strips (setting cylinder_strips). Equirect (360°) layers still can't be shown.
- Launch tests read Lepton's crash logcat (agent v24); triage signatures for both crashes.
- Send files to Lepton apps (frameport frame send/storage, GUI "Send files"):
  ~/Videos, ~/Downloads, ~/Documents = /sdcard/Movies, Download, Documents in every app.

PC VR:
- Launch modes from the game files (repack with bundled Revive -> run directly,
  dual-API builds -> launch args, Oculus-only -> Revive); patches pcvr.repack_launcher,
  pcvr.launch_args; Platform SDK games routed to the PC.
- pcvr.steamvr_tuning (default on): reads SteamVR's session summary (dropped frames
  + compositor timeouts, fpsVR if installed) and sets per-app refresh rate / motion
  smoothing via fp_vrsettings.exe (OpenVR IVRSettings).

GUI: upload speed / ETA, UI scale (auto from Windows DPI under WSL, Settings ->
Appearance), fixed grey box in Problems & feedback.
2026-09-30 21:51:37 -04:00
spoopyghosty0 c1c33d8482 LibOVRRT LoadLibrary redirect (pcvr.libovr_redirect) — runtime substitution only
On the Frame, place Revive's runtime where an Oculus game's SDK looks for it, so
the game can load a VR runtime — the filesystem equivalent of Revive's LoadLibrary
redirect, without the inline hooking that fails under Proton-arm64 (ARM64EC).

- agent v18 set_libovr_redirect: symlinks LibOVRRT{64,32}_1.dll in the exe dir to
  Revive's LibReviveXR runtime (kept in revive/ so its deps still resolve); only
  ever creates/removes its own symlink, never a real game-shipped DLL.
- patch pcvr.libovr_redirect (requires pcvr.revive, on by default for Oculus Rift
  games, ignored on PC); installer + deployment.json wiring; migration
  rift_libovr_redirect for existing entries.

This is pure runtime substitution. It does NOT touch the game's Oculus runtime
signature check: a build that verifies LibOVRRT's signature still rejects Revive's
unsigned runtime (-3021). It only helps builds that don't verify it, and gets the
rest from "can't load runtime" (-3001) to the (intact) signature check.

135 tests pass. Not yet demonstrated on-device (Frame was off).
2026-09-30 10:21:52 -04:00
spoopyghosty0 94bc4c479e PC VR playability (auto SteamVR, OpenVR backend) + honest Frame routing
Make PC VR games actually reach VR, and stop mis-claiming Frame support:

- PC: auto-start SteamVR on Play/launch (winhost.start_steamvr) — Oculus games
  ran as a flat window because SteamVR wasn't up; Revive has no runtime to bind
  to without it. Default PC installs to Revive's OpenVR (SteamVR) backend
  (pcvr.revive_openvr on) instead of the OpenXR backend that was crashing; the
  Frame launcher still uses /openxr. Play toast warns if SteamVR can't come up.
- Routing: detect OpenVR (openvr_api imports/DLLs, not the universal-in-Unreal
  IVRSystem/VR_InitInternal strings). frame_native = (openxr or openvr) and not
  libovr; any LibOVR game is Oculus -> needs Revive -> PC only. The game page
  says per-game where it runs; installing an Oculus game on the Frame warns
  first. Rick and Morty runs on the Frame via its catalog recipe. Migration
  rift_frame_native re-analyzes + re-derives existing entries.

Note: Oculus/LibOVR games can't run on the Frame — Revive's hooks don't work
under Proton-arm64 (ARM64EC), and FramePort does not defeat the Oculus runtime
Authenticode signature check. Those games are PC-only (SteamVR + Revive).

Bump to 0.2.0. 133 tests pass.
2026-09-30 09:34:12 -04:00
spoopyghosty0 0cb195ec2c Oculus Rift / PC VR support, GUI overhaul, artwork and Frame tooling
Adds Oculus Rift (PC VR) games alongside Quest:
- analysis/rift.py (own PE reader: imports incl. delay-imports, GUI-subsystem
  filter, exe ranking, icons), sources/rift_dump.py (recursive scan, one game
  per folder, collections), catalog rift fields + Rick and Morty recipe.
- patches/pcvr.py (category "pcvr", shown as patches): Revive (LibOVR->OpenXR,
  default on for Oculus games), revive_openvr, no_crash_reporter (Unreal),
  oculus_unreal (OculusHMDConnected helper), xr_timefix (Frame OpenXR layer),
  proton_*. tools/revive.py (find/install Revive, never replaces the user's).
- targets/pc_revive.py (run on this Windows/WSL PC via Revive + local Steam;
  core/winhost.py helpers) and frame_lepton Proton path; agent handles Proton
  install, prepare/finalize_pcvr, launch, list_files (AGENT_VERSION 17).
- native/oculushmd (fp_oculushmd.exe) and native/xrlayer (Frame OpenXR 1.1->1.0
  + timespec-time layer); prebuilt artifacts + SHA256SUMS.

Runtime findings (Frame, SteamOS 0.4.2 / Proton 11 arm64): the SteamVR runtime
only accepts OpenXR 1.0, so Proton's vrhelper (1.1) needs the compat layer;
Oculus/LibOVR games need a VR runtime (Revive on PC with SteamVR, or SteamVR-
native builds run directly). Platform-SDK / signature-checked repacks can't run
on the Frame; those are flagged, never bypassed.

GUI overhaul (ui/): streaming persistent Library with tags/filters/sort, a
background job queue + activity panel, per-game page, Frame tab with installed
list + file browser, Settings (incl. agent version), Play + launch-test actions,
resumable/interruptible installs with up-front interventions, dark theme, help
hints, uninstaller (uninstall.py). Faster uploads via a direct link (USB /
Frame hotspot) when reachable. Artwork/details from OculusDB + Steam + ovrp,
composed Steam art sets and tags, thumbnails served by URL.

Docs (PLAYBOOK/FRAME_RUNTIME/ARCHITECTURE/INSTALL/CLAUDE.md), triage signatures,
and unit tests throughout (130 pass).
2026-09-30 00:35:19 -04:00