Skip to content

Release v1.7.0

Choose a tag to compare

@github-actions github-actions released this 09 Aug 09:02

VR CyberDeck v1.7.0 — NO_COMMITS_TO_DECODE

> ACCESS GRANTED. JACK IN. OPERATE. DEPLOY. CONTROL.

VR CyberDeck is a cross-platform desktop deck for managing, sideloading, and uploading content to Meta Quest devices. It started as a fork of ApprenticeVR by jimzrt (huge thanks — the core engine is theirs) and grew into a full neon-terminal rebrand of the experience.


// CHANGELOG

A big release focused on install reliability, download integrity, and a wave of quality-of-life features — plus stability fixes for launch-time freezes.

Since 1.6.7 · PRs #28 and #29 · fixes #25


🛠️ Install & OBB reliability

  • Fixed the main cause of games crashing after install (missing OBB resources).
    OBB files are pushed to the headset one at a time, but a failed or truncated
    push was being silently ignored — the transfer helper returned a failure
    the caller never checked, so a partial OBB copy was reported as a successful
    install. The game then launched with missing assets and crashed. Every OBB
    push site now checks the result and fails the install loudly instead:

    • Standard APK + OBB installs abort with a clear error if any file fails to copy.
    • install.txt-scripted push steps are now treated as critical (like install),
      so a failed resource push no longer counts as success.
  • Added on-device OBB verification after every install.
    Once the OBB folder is pushed, the app reads the file sizes back off the
    headset and compares them to what was sent. A missing or wrong-sized file
    fails the install with a specific message (which file, expected vs actual
    bytes) rather than leaving you with a silently broken game. This is a single
    shell round-trip, so it runs on every install with negligible overhead.

📦 Download integrity — release.manifest verification

  • Every download is now verified against the release's own manifest.
    Each release ships a release.manifest listing the exact byte size of every
    file (APK, asset-config.json, and each OBB). After extraction, VR CyberDeck
    checks every extracted file against it — a missing or size-mismatched file
    means the download/extraction was incomplete or corrupt, and the item fails
    with a clear error before you try to install it. This catches truncated
    or partially-corrupted downloads that would otherwise surface later as a
    crashing game.
    • Authoritative (exact byte sizes) and needs no extra input from you.
    • Gracefully skipped for older releases that ship without a manifest, so it
      never blocks an otherwise-good install.

💾 Save Backup (BETA) — Walkabout Mini Golf restore (#25)

  • Restores now handle games that regenerate their save folder on reinstall.
    Walkabout Mini Golf stores its save at
    Android/data/.../files/Profiles/Oculus/<random>/Profile_Default.data, but
    the game creates a new random-numbered profile folder when reinstalled —
    so restoring the old folder verbatim left the game reading an empty one and
    the save appeared lost.
    • Added a profile-driven post-restore fixup (profileFolderSync) that
      copies the restored save file into every current profile folder on the
      device, so whichever one the game reads actually contains it.
    • The fixup is best-effort and never fatal — any problem is written to
      the backup log (included in bug reports) but never fails the restore.
    • Enabled for Walkabout Mini Golf via the backup-profiles registry.
    • Tip: for best results, launch the game once after reinstalling (so it
      creates its new profile folder) before restoring.

✨ Quality-of-life features

  • Reorder the download queue. Move queued items up or down, plus the
    existing bump-to-front button, so you control what downloads next.
  • Download-complete desktop notifications. Get a system notification (and
    sound) when a game finishes downloading.
  • Right-click context menu on games. Right-click any game card or table row
    for quick actions: Details, Download & Install, Update,
    Reinstall, Uninstall, and Copy Package Name.

🩹 Stability fixes

  • Fixed a launch-time freeze caused by an infinite console-forwarding loop.
  • The app now degrades gracefully when the ADB server fails to start
    instead of hard-failing.
  • Fixed the intro animation freezing on the boot cursor (React StrictMode,
    dev builds).

🧰 Under the hood

  • Added a Prettier config matching the project's real style (single quotes,
    no semicolons, 100-column, no trailing commas) and normalized formatting
    repo-wide — eliminating ~1,750 spurious lint warnings on every run.
  • Resolved long-standing TypeScript blockers — the project now typechecks
    with 0 errors (web + main).
  • Added unit tests for the new release.manifest parser and the save-restore
    fixup planner; full node test suite passing; production build verified.

Notes for testers

  • Walkabout restore (#25) is newly implemented and benefits from a real
    on-device pass: reinstall Walkabout, launch it once, then restore a backup —
    the backup log should show Synced Profile_Default.data → …/<newRandom>/….
  • The right-click context menu is new; a quick pass on both a game card and
    a table row is worthwhile.

## // HEADLINE FEATURES (Click to Expand - ITS A SPOILER!)

[ LIBRARY ] — optional, when you add a server

  • Sideloader-first: works first launch with zero config; add your own server (a server config or an rclone config) under Manage Remotes for a browsable library
  • Card view and table view (table now stretches edge-to-edge in wide windows)
  • Persistent sort, density presets, 18+ filter, mirror management with public fallback
  • NEW / UPDATED badges driven off real lastUpdated timestamps

[ TRANSFERS ]

  • Up to 5 parallel downloads with live progress
  • Live // TRANSFER_BUS strip in the header — rotates through active transfers with name, stage, %, speed, and ETA
  • Unified Transfers drawer with stage-aware labels (Installing APK..., Copying OBB...)
  • Cyberdeck warns you with [ TRANSFERS IN PROGRESS ] if you try to close the window mid-transfer (works for both X and Cmd+Q)
  • Scan existing downloads folder, retry, clear-completed, per-item delete

[ DEVICE / ADB ]

  • Auto-connect Quest on launch, WiFi bookmarks for wireless ADB
  • ADB Shell with built-in quick-command shortcuts:
    • PERFORMANCE — pin CPU/GPU level, swap refresh rate (72/90/120Hz), reset texture
    • UPDATES — block / unblock the OS updater and Meta Store
    • SYSTEM — reboot variants, battery, storage, wifi, IP, proximity toggle
    • PACKAGES — list 3rd-party / all / current focused app
    • WIRELESStcpip 5555, adb devices
  • Custom user macros — define your own labelled pill for any command you spam (right-click to edit/delete, persisted across sessions)
  • Disable-sideloading toggle for safety

[ TRAILERS ]

  • Switched from youtube trailers to meta trailers... and back again.
  • No ads, no suggested videos, no subscribe buttons, no comments, no end-screen "Watch next" grid — just the trailer, then it stops
  • Autoplays as soon as you open the trailer drawer

[ INTERFACE ]

  • Glitch UNAUTHORIZED → AUTHORIZED boot intro
  • Matrix-style random g33ky_u$3rn4m3$ per session
  • Neon Hacker Console in the header (live SYS_STATUS readout — now properly fits the 88px header without clipping)
  • Font picker — swap Courier New for Console / Terminal / System Mono if the default is hard to read
  • Optional sound effects (drop-in) — drop click.wav, type.wav, or matrix.wav into your user-data sounds/ folder (no rebuild) or resources/sounds/ (bundled), and the UI plays them on button clicks, the boot-intro typing, and the ADB shell matrix load. Settings has a master toggle, volume slider, TEST button, and a per-file "✓ READY / — missing" status readout. Lookup order: user data → bundled, so you can override bundled sounds without recompiling.
  • Colorblind mode now covers the whole UI — version subtitles, filter counters, Transfers button, battery pill, breach animation all swap palette
  • Accent color picker, font scale up to 200%, tab memory
  • Compact, laptop-friendly layout (900x640 minimum window)
  • One-click log upload from Settings → Log Upload

// DOWNLOAD

Pick the build for your platform — same set of artifacts as the prereleases:

File Platform
vr-cyberdeck-1.7.0-x64.dmg macOS x64
vr-cyberdeck-1.7.0-arm64.dmg macOS arm64
vr-cyberdeck-1.7.0-setup-x64.exe Windows — Installer
vr-cyberdeck-1.7.0-portable-x64.exe Windows — Portable
vr-cyberdeck-1.7.0-x86_64.AppImage Linux x64
vr-cyberdeck-1.7.0-arm64.AppImage Linux ARM64
vr-cyberdeck-1.7.0-amd64.deb Debian/Ubuntu x64
vr-cyberdeck-1.7.0-arm64.deb Debian/Ubuntu ARM64

macOS — "App is damaged":

xattr -c /Applications/VR\ CyberDeck.app

Linux AppImage:

chmod +x vr-cyberdeck-1.7.0-x86_64.AppImage
./vr-cyberdeck-1.7.0-x86_64.AppImage

Already on a 0.x build? It will auto-update.


// JACK_IN

  1. Install the build for your OS
  2. Plug your Quest in via USB (data-capable cable)
  3. Allow USB Debugging on the headset
  4. Drag an APK, ZIP, game folder, or OBB folder onto the deck to sideload it

That's it — no account, no server, no JSON to edit. Want a browsable library instead? You can add your own server (a server config or an rclone config) under Manage Remotes — either you already know one, or you just use it as a sideloader. Power-user knobs (custom servers, mirrors, rclone configs, ADB macros, sound effects) all live in Settings.


// FEEDBACK

  • 🐛 Open an issue for bugs — include a rentry link of the log from Other Settings → //Upload Log.

// CREDITS

Built on top of ApprenticeVR by jimzrt. Without that foundation this project doesn't exist.

Special thanks to Rod — my crazy friend who believes in megalodons on Mars and gave me incredible feedback during the prerelease cycle.

And to everyone who tested the 0.x builds and reported issues — y'all shaped the 1.0.0 polish list.

// LICENSE

GNU Affero GPL v3


Need help adding a server? Tutorial Video by CrazyScamp here

> v1.7.0 — END_OF_FILE