Skip to content

Releases: DeliciousMeatPop/VRCD

Release v1.8.3

Choose a tag to compare

@github-actions github-actions released this 24 Sep 08:54

VR CyberDeck v1.8.3 — LINUX_UDEV_ISSUES_GO_BRRRRR

> 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

New


## // 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
    • WIRELESS — tcpip 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.8.3-x64.dmg macOS x64
vr-cyberdeck-1.8.3-arm64.dmg macOS arm64
vr-cyberdeck-1.8.3-setup-x64.exe Windows — Installer
vr-cyberdeck-1.8.3-portable-x64.exe Windows — Portable
vr-cyberdeck-1.8.3-x86_64.AppImage Linux x64
vr-cyberdeck-1.8.3-arm64.AppImage Linux ARM64
vr-cyberdeck-1.8.3-amd64.deb Debian/Ubuntu x64
vr-cyberdeck-1.8.3-arm64.deb Debian/Ubuntu ARM64

macOS — "App is damaged":

xattr -c /Applications/VR\ CyberDeck.app

Linux AppImage:

chmod +x vr-cyberdeck-1.8.3-x86_64.AppImage
./vr-cyberdeck-1.8.3-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.8.3 — END_OF_FILE

Release v1.8.2

Choose a tag to compare

@github-actions github-actions released this 17 Sep 15:41

VR CyberDeck v1.8.2 — METADATA_INTEGRITY_RESTORED

> 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

Bug Fixes

  • Improved game metadata reliability to prevent missing or corrupted information when sideloading titles to your Quest headset

## // 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
    • WIRELESS — tcpip 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.8.2-x64.dmg macOS x64
vr-cyberdeck-1.8.2-arm64.dmg macOS arm64
vr-cyberdeck-1.8.2-setup-x64.exe Windows — Installer
vr-cyberdeck-1.8.2-portable-x64.exe Windows — Portable
vr-cyberdeck-1.8.2-x86_64.AppImage Linux x64
vr-cyberdeck-1.8.2-arm64.AppImage Linux ARM64
vr-cyberdeck-1.8.2-amd64.deb Debian/Ubuntu x64
vr-cyberdeck-1.8.2-arm64.deb Debian/Ubuntu ARM64

macOS — "App is damaged":

xattr -c /Applications/VR\ CyberDeck.app

Linux AppImage:

chmod +x vr-cyberdeck-1.8.2-x86_64.AppImage
./vr-cyberdeck-1.8.2-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.8.2 — END_OF_FILE

Release v1.8.1

Choose a tag to compare

@github-actions github-actions released this 14 Sep 06:11

VR CyberDeck v1.8.1 — JUST_IN_TIME

> 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

  • Reworked the error message so its much clearer when an incorrect system time is preventing downloads, addressing issue #57

## // 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
    • WIRELESS — tcpip 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.8.1-x64.dmg macOS x64
vr-cyberdeck-1.8.1-arm64.dmg macOS arm64
vr-cyberdeck-1.8.1-setup-x64.exe Windows — Installer
vr-cyberdeck-1.8.1-portable-x64.exe Windows — Portable
vr-cyberdeck-1.8.1-x86_64.AppImage Linux x64
vr-cyberdeck-1.8.1-arm64.AppImage Linux ARM64
vr-cyberdeck-1.8.1-amd64.deb Debian/Ubuntu x64
vr-cyberdeck-1.8.1-arm64.deb Debian/Ubuntu ARM64

macOS — "App is damaged":

xattr -c /Applications/VR\ CyberDeck.app

Linux AppImage:

chmod +x vr-cyberdeck-1.8.1-x86_64.AppImage
./vr-cyberdeck-1.8.1-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.8.1 — END_OF_FILE

Release v1.8.0

Choose a tag to compare

@github-actions github-actions released this 02 Sep 07:11

VR CyberDeck v1.8.0 — PROXY_GOES_BRRR

> 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

VR CyberDeck 1.8.0

✨ New features - This is a BIG 'un!

Game Details, enriched (#45)

  • Click a game's cover art in Game Details to open a full-size lightbox (Esc or click anywhere to close).
  • Game Details now shows a short description with source attribution, pulling from library metadata first and falling back to a strict, VR-specific Wikipedia match. Descriptions are cached locally so they load instantly next time.

Proxy support for downloads (#52, #56)

  • New Custom Proxy section in Download Settings: route game-archive downloads through an HTTP, HTTPS, or SOCKS5 proxy.
  • Optional username / password authentication for proxies that require it.
  • Supports DNS names, IPv4, and IPv6 hosts, with validation so bad values are caught before they're saved.
  • When a proxy is enabled, downloads use the public endpoint and skip FTP/SFTP mirrors — so your traffic can't quietly bypass the proxy — and inherited system proxy exclusions are cleared for the download.

🐛 Fixes

Your settings survive updates (#49)

  • Installing an update on Windows no longer resets Disable All Extras, Colorblind Mode, Sound Effects, accent color, or font. The updater was wiping local settings on every install; it now only clears them on a genuine uninstall.

Smarter, smaller save backups (#50, #46, #47)

  • Save backups no longer capture regenerated engine junk (GPU shader/pipeline caches, il2cpp metadata, extracted localization) — dramatically smaller backups for many Unity/VR titles.
  • Games that keep no real save data in the shared folder now report that honestly up front ("no save data found — this game stores progress in private or online storage") instead of appearing to back up successfully and failing on restore.

🔒 Privacy

  • The new game-description lookup respects Disable All Extras: with extras off, Game Details still shows local info but makes no network requests. (#53)
  • The Wikipedia lookup now sends a correctly-versioned app identifier rather than a stale hardcoded one. (#53)

🔧 Behind the scenes

  • Added continuous integration: typechecking, unit tests, and linting now run on every change. (#53, #55)
  • Cleared the project's lint and formatting debt and made lint a blocking check. (#54, #55)

Special thanks to caiowilson for the PR's on this and other updates


## // 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
    • WIRELESS — tcpip 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.8.0-x64.dmg macOS x64
vr-cyberdeck-1.8.0-arm64.dmg macOS arm64
vr-cyberdeck-1.8.0-setup-x64.exe Windows — Installer
vr-cyberdeck-1.8.0-portable-x64.exe Windows — Portable
vr-cyberdeck-1.8.0-x86_64.AppImage Linux x64
vr-cyberdeck-1.8.0-arm64.AppImage Linux ARM64
vr-cyberdeck-1.8.0-amd64.deb Debian/Ubuntu x64
vr-cyberdeck-1.8.0-arm64.deb Debian/Ubuntu ARM64

macOS — "App is damaged":

xattr -c /Applications/VR\ CyberDeck.app

Linux AppImage:

chmod +x vr-cyberdeck-1.8.0-x86_64.AppImage
./vr-cyberdeck-1.8.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.8.0 — END_OF_FILE

Release v1.7.6

Choose a tag to compare

@github-actions github-actions released this 20 Aug 01:06

VR CyberDeck v1.7.6 — PING_ON_THAT_MANUAL_INSTALL_THING

> 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

Bug Fixes

  • Manual installs now send a desktop notification at the end of the install or batch install.

## // 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
    • WIRELESS — tcpip 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.6-x64.dmg macOS x64
vr-cyberdeck-1.7.6-arm64.dmg macOS arm64
vr-cyberdeck-1.7.6-setup-x64.exe Windows — Installer
vr-cyberdeck-1.7.6-portable-x64.exe Windows — Portable
vr-cyberdeck-1.7.6-x86_64.AppImage Linux x64
vr-cyberdeck-1.7.6-arm64.AppImage Linux ARM64
vr-cyberdeck-1.7.6-amd64.deb Debian/Ubuntu x64
vr-cyberdeck-1.7.6-arm64.deb Debian/Ubuntu ARM64

macOS — "App is damaged":

xattr -c /Applications/VR\ CyberDeck.app

Linux AppImage:

chmod +x vr-cyberdeck-1.7.6-x86_64.AppImage
./vr-cyberdeck-1.7.6-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.6 — END_OF_FILE

Release v1.7.5

Choose a tag to compare

@github-actions github-actions released this 19 Aug 06:35

VR CyberDeck v1.7.5 — UNZIP_BEFORE_YOU_RIP Part 2

> 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

Bug Fixes

  • Fixed installation file extraction priority to ensure APK files are properly unpacked before processing
  • Drag and drop fixed
  • Apps not on the server show for management regardless of where they came from
  • Added mount as drive and other useful buttons to ADB shell section

## // 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
    • WIRELESS — tcpip 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.5-x64.dmg macOS x64
vr-cyberdeck-1.7.5-arm64.dmg macOS arm64
vr-cyberdeck-1.7.5-setup-x64.exe Windows — Installer
vr-cyberdeck-1.7.5-portable-x64.exe Windows — Portable
vr-cyberdeck-1.7.5-x86_64.AppImage Linux x64
vr-cyberdeck-1.7.5-arm64.AppImage Linux ARM64
vr-cyberdeck-1.7.5-amd64.deb Debian/Ubuntu x64
vr-cyberdeck-1.7.5-arm64.deb Debian/Ubuntu ARM64

macOS — "App is damaged":

xattr -c /Applications/VR\ CyberDeck.app

Linux AppImage:

chmod +x vr-cyberdeck-1.7.5-x86_64.AppImage
./vr-cyberdeck-1.7.5-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.5 — END_OF_FILE

Release v1.7.4

Choose a tag to compare

@github-actions github-actions released this 19 Aug 04:41

VR CyberDeck v1.7.4 — UNZIP_BEFORE_YOU_RIP

> 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

Bug Fixes

  • Fixed installation file extraction priority to ensure APK files are properly unpacked before processing during install.txt installation to mirror rookie functionality for better compatibility between vrSrc files.

## // 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
    • WIRELESS — tcpip 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.4-x64.dmg macOS x64
vr-cyberdeck-1.7.4-arm64.dmg macOS arm64
vr-cyberdeck-1.7.4-setup-x64.exe Windows — Installer
vr-cyberdeck-1.7.4-portable-x64.exe Windows — Portable
vr-cyberdeck-1.7.4-x86_64.AppImage Linux x64
vr-cyberdeck-1.7.4-arm64.AppImage Linux ARM64
vr-cyberdeck-1.7.4-amd64.deb Debian/Ubuntu x64
vr-cyberdeck-1.7.4-arm64.deb Debian/Ubuntu ARM64

macOS — "App is damaged":

xattr -c /Applications/VR\ CyberDeck.app

Linux AppImage:

chmod +x vr-cyberdeck-1.7.4-x86_64.AppImage
./vr-cyberdeck-1.7.4-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.4 — END_OF_FILE

Release v1.7.2

Choose a tag to compare

@github-actions github-actions released this 10 Aug 02:45

VR CyberDeck v1.7.2 — ONE_PING_TO_RULE_THEM_ALL

> 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 focused bug-fix release: kills the notification/click-sound spam some of you hit during parallel downloads, and stops a harmless metadata file from blocking installs.

Since 1.7.1 · fixes #31


🔕 Fixed: notification & click-sound spam during parallel downloads (#31)

  • Fixed the app spamming the click sound and Windows notifications the moment
    the first of several parallel downloads finished.
    Once one download in a
    batch completed, every progress update from the still-running downloads
    re-fired a "Download Complete" notification and click sound for the
    already-finished game — over and over, without you doing anything.
  • Root cause: the download queue's completion detector was comparing against
    a stale, empty snapshot of the queue, so it treated an already-completed
    download as "newly completed" on every single queue update. With multiple
    downloads in flight, those updates arrive constantly — hence the machine-gun
    notifications.
  • Now each completed download notifies exactly once. As a bonus:
    • Downloads that finished in a previous session no longer fire a
      notification when the app starts up.
    • Re-downloading a game you already had will correctly notify again when it
      re-completes.
  • Thanks to @ppanayotow for the clear repro and log. 🙏

📦 Fixed: release.add no longer blocks (or warns on) an install (#35 follow-up)

  • Some releases (e.g. certain Beat Saber modding builds) list a release.add
    metadata file in their manifest that isn't actually shipped in the download.

    On 1.7.0 that failed the install outright ("Extracted files do not match
    release.manifest: … release.add (missing)"); on 1.7.1 it still raised a false
    "manifest mismatch" warning and skipped auto-install for a release that was
    perfectly fine.
  • release.add is release metadata, not a game asset — its absence can't cause
    the missing-resources crash that manifest verification exists to catch. It's
    now treated as a sidecar and skipped during verification, exactly like
    release.manifest already was. No error, no false warning — while genuine
    corruption (truncated APK/OBB, etc.) is still caught.

## // 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
    • WIRELESS — tcpip 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.2-x64.dmg macOS x64
vr-cyberdeck-1.7.2-arm64.dmg macOS arm64
vr-cyberdeck-1.7.2-setup-x64.exe Windows — Installer
vr-cyberdeck-1.7.2-portable-x64.exe Windows — Portable
vr-cyberdeck-1.7.2-x86_64.AppImage Linux x64
vr-cyberdeck-1.7.2-arm64.AppImage Linux ARM64
vr-cyberdeck-1.7.2-amd64.deb Debian/Ubuntu x64
vr-cyberdeck-1.7.2-arm64.deb Debian/Ubuntu ARM64

macOS — "App is damaged":

xattr -c /Applications/VR\ CyberDeck.app

Linux AppImage:

chmod +x vr-cyberdeck-1.7.2-x86_64.AppImage
./vr-cyberdeck-1.7.2-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.2 — END_OF_FILE

Release v1.7.1

Choose a tag to compare

@github-actions github-actions released this 10 Aug 01:59

VR CyberDeck v1.7.1 — COMMON_SENSE_OR_GTFO

> 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 stability-and-recovery release: the deck now heals a broken ADB connection on its own, a bad download manifest no longer bricks an otherwise-good install, the card-size slider actually works across its whole range, and getting your logs to us is now one click from the main screen. Plus a big internal cleanup — the entire translation layer is gone.

Since 1.7.0 · PRs #32, #33, #34, #35, #36


🔌 ADB — auto-recovery from a stuck server (#34)

  • The deck now recovers on its own when another ADB server is hogging the port.
    The #1 "my Quest won't connect" cause is a different ADB daemon already
    holding port 5037 — SideQuest, Rookie Sideloader, Android platform-tools, or
    just a different adb version — which stops our bundled adb from handshaking
    (could not read ok from ADB Server / cannot connect to daemon). Instead of
    failing on launch, VR CyberDeck now:
    • Detects the failed handshake and retries once automatically — it runs
      kill-server to free the port, then start-server to bring up our own
      daemon, and re-attempts device tracking. In the common case your headset
      just shows up and you never see an error at all.
  • When recovery can't help, you get a message you can act on.
    If the port is held by something we can't stop (or a firewall/AV is blocking
    the loopback socket), the old raw Command failed: … cannot connect to daemon
    dump is replaced with a plain-English explanation: which tools to close
    (SideQuest, Rookie, platform-tools), the adb kill-server escape hatch, and a
    reminder that you can keep sideloading local files in the meantime.
  • A failed ADB start no longer wedges every future retry. The tracking state
    is reset cleanly on failure, so hitting Scan after closing the conflicting
    tool works instead of staying stuck.

📦 Download integrity — manifest mismatch is now a warning, not a wall (#35)

  • A release.manifest mismatch no longer blocks an install outright.
    In 1.7.0 a size mismatch against the release manifest failed the item hard.
    That was too aggressive: a release can simply ship a wrong or stale
    manifest
    , leaving you unable to install a download that's actually fine. Now:
    • A mismatch completes the item with a warning instead of erroring it out.
      The download stays in the Completed state so you can choose to install
      anyway
      .
    • Auto-install is skipped for a warned item — the deck won't silently push
      a possibly-incomplete build; the decision is explicitly yours. Installing
      from Completed clears the warning (you've accepted the risk).
  • The manifest no longer flags itself. release.manifest can't reliably
    state its own byte size (writing the size in changes the size), so some
    releases list a stale size for it — which produced a guaranteed false
    mismatch. The check now skips the manifest file itself.
  • The genuine-corruption safety net is intact: a real truncated/partial download
    still surfaces the mismatch loudly — it just informs instead of forbids.

🎚️ Games view — card-size slider fixed across its full range (#32)

  • The card-size slider now changes the layout at every position, not just the
    last few.
    The old grid used auto-fill with a minmax(max(--card-min, …))
    floor. Whenever the target card width dropped below the 140px minimum — which
    is most of the slider's travel, and nearly all of it on a narrow window —
    auto-fill ignored the slider entirely and just packed 140px columns, pinning
    the count to a constant. That was the "slider does nothing until you slam it to
    the end" dead zone.
  • The grid now renders exactly the requested column count directly
    (repeat(var(--card-cols), minmax(0, 1fr))), so every slider step maps to a
    distinct layout. Columns still shrink to share the row on narrow windows
    without overflowing.

📝 Logs — "send your damn logs" is now one click away (#33)

  • Added an in-app link to the step-by-step log-upload wiki guide, so you're
    not left guessing how to report a bug.
  • Placed it where a stuck user can actually reach it: on the main deck / games
    view
    , and also on the startup dependency-error screen (where Settings
    isn't reachable yet). Both open the guide in your system browser.
  • Still backed by the existing one-click Settings → Log Upload → Upload to
    rentry.co
    , which copies the shareable code to your clipboard.

🧹 Under the hood — internationalization layer removed (#36)

  • Removed the entire i18n / translations system. The app has always shipped
    English-only in practice, and the half-wired translation layer (the en/es
    string tables, LanguageProvider, useLanguage, and the settings:get/set- language IPC) was dead weight causing interface issues. All UI strings are now
    plain, direct English.
  • Net effect: ~470 lines of translation tables and ~140 lines of plumbing
    deleted
    , a simpler provider tree, and fewer moving parts to break. No
    user-facing feature was lost — nothing was actually translated.

Notes for testers

  • ADB recovery (#34): open SideQuest (or run adb start-server from
    platform-tools) before launching VR CyberDeck, then launch it — the deck
    should recover automatically and connect. Kill our recovery by holding the
    port with a process it can't stop and confirm you get the plain-English
    message, not the raw command dump.
  • Manifest warning (#35): a download whose manifest doesn't match should land
    in Completed with a warning and not auto-install — verify you can still
    install it manually.
  • Card slider (#32): drag the size slider end-to-end on both a wide and a
    narrow window; every position should visibly change the columns.

## // 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
    • WIRELESS — tcpip 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.1-x64.dmg macOS x64
vr-cyberdeck-1.7.1-arm64.dmg macOS arm64
vr-cyberdeck-1.7.1-setup-x64.exe Windows — Installer
vr-cyberdeck-1.7.1-portable-x64.exe Windows — Portable
vr-cyberdeck-1.7.1-x86_64.AppImage Linux x64
vr-cyberdeck-1.7.1-arm64.AppImage Linux ARM64
vr-cyberdeck-1.7.1-amd64.deb Debian...
Read more

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
    • WIRELESS — tcpip 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...

Read more