101 Commits
Author SHA1 Message Date
Pixelplanet 766e67bffd fix: enable KeyboardFlag_Minimal for immediate keystroke dispatch and clean accumulation 2026-10-20 17:31:29 +02:00
Pixelplanet 8e1d97dc9b fix: restore character accumulation in virtual keyboard input 2026-10-20 16:54:16 +02:00
Pixelplanet de3fe8fcf8 fix: direct SMB bookmark navigation and virtual keyboard buffer reset 2026-10-20 16:07:08 +02:00
Pixelplanet 3d11ccbbf8 fix(keyboard): correct floor vs eye coordinate transform and eliminate persistent draft buffer 2026-10-20 15:32:18 +02:00
Pixelplanet ec9821f1af fix(input): optimize keyboard height/tilt, isolate text fields, and fix transport dock trigger 2026-10-20 15:06:50 +02:00
Pixelplanet f26405797e fix(input): correct keyboard tilt angle, autofocus laser raycast on keys, and refine UI dismissal wake-up triggers 2026-10-20 13:29:19 +02:00
Pixelplanet 2f684e23a2 fix(ui): fix HUD dismissal flicker and center transport recessed island alignment
- Prevent in.selectHeld and trigger activity from resetting hudDismissed_ after manual dismiss
- Add App::dismissHud() to reset activity anchors to current controller poses and establish a 500ms cooldown
- Center transport recessed island background at cx=0.0f, hw=0.34f, giving symmetrical 34mm padding across all 5 buttons
- Add hover tooltip pills for [Hide UI] and [Stop]
v1.6.1
2026-10-20 12:29:45 +02:00
Pixelplanet 7aede92244 feat: release v1.6.0 with virtual keyboard laser autofocus, SMB credentials, bookmarks overview, and 1-click updater
- Virtual Keyboard Laser Auto-Focus: vrcompositor laser mouse overlay configuration for instant typing without manual grip toggle; tracking persistence across session states
- Protected SMB Network Share Manager: in-browser 'Add Share' modal supporting multiple authenticated shares, AES-GCM credential encryption with strict 0600 file permissions, automatic credential lookup during streaming
- IPv4 Validation: numeric filtering, section clamping to 255, and stripping leading zeros
- Bookmarks Overview: renamed Quick Paths to Bookmarks with dedicated 'bookmarks://' overview panel, ASCII button labels replacing multi-byte glyphs
- 1-Click Seamless Updater: desktop shortcut for SteamOS Desktop Mode, standalone update.sh script, remote Wi-Fi PC updaters, and updated release documentation
v1.6.0
2026-10-20 11:42:13 +02:00
Pixelplanet bce434a115 docs: add uninstallation instructions, remote uninstaller scripts, and grid cleanup 2026-10-18 18:48:21 +02:00
Pixelplanet 18a50d38ab chore: enforce LF line endings via .gitattributes for shell scripts and CI v1.5.0 2026-10-18 16:15:31 +02:00
Pixelplanet c404131924 feat(branding): add portrait capsule, landscape header, and transparent logo for Steam library 2026-10-18 15:15:30 +02:00
Pixelplanet 09a5f73393 feat: embed official hero banner in README and integrate hero artwork across all deploy scripts 2026-10-18 15:00:53 +02:00
Pixelplanet dfc1664806 feat(assets): finalize Steam hero banner with headset on left, uncut title, and refined specs 2026-10-18 14:54:17 +02:00
Pixelplanet 6c0bfd4e4a feat(assets): update hero banner with Steam Frame on left, uncut title, and refined specs 2026-10-18 14:49:01 +02:00
Pixelplanet 6bfec8bf19 feat(assets): adopt Style 2 as official icon and add 3 Steam hero banner options 2026-10-18 14:44:10 +02:00
Pixelplanet 1c18c2c328 feat(assets): add authentic Steam Frame 16-bit pixel art icon styles 1 and 2 2026-10-18 14:27:10 +02:00
Pixelplanet c8e738ef21 feat(assets): add authentic Valve Steam Frame app icon variants for 1, 2, and 4 2026-10-18 09:56:17 +02:00
Pixelplanet 7e5915e115 feat: add authentic Steam Frame oval visor and rear battery icon designs 2026-10-18 09:43:21 +02:00
Pixelplanet be5ea10875 feat: add refined Steam Frame standalone icon redesigns (pancake optics, 4-camera array, rear battery) 2026-10-18 09:37:45 +02:00
Pixelplanet ba662f848b feat: add Steam Frame hardware-accurate app icon variants 2026-10-18 09:33:46 +02:00
Pixelplanet aa896397fe feat: add pixelated app icons and remove devkit prefix from steam shortcuts 2026-10-18 09:29:59 +02:00
Pixelplanet 7bf367419f docs: update deploy guide, readme links, and discreet vault instructions 2026-10-17 22:39:45 +02:00
Pixelplanet 83cf192d2d docs: clarify install options and SSH prerequisites 2026-10-17 22:26:49 +02:00
Pixelplanet 2a613ebed5 feat: add remote PC installer and double-clickable USB desktop installer 2026-10-17 22:21:37 +02:00
Pixelplanet 8454ab5de3 docs: blur real filenames in mockup screenshots for privacy 2026-10-17 22:15:06 +02:00
Pixelplanet 2c74923701 docs: add UI screenshot gallery to README and automated capture tool 2026-10-17 21:59:13 +02:00
Pixelplanet 22ed9e1ede fix(install): support case-insensitive Shortcuts key in shortcuts.vdf and copy install.sh from unpacked tarball v1.4.2 v1.4.1 2026-10-17 20:55:13 +02:00
Pixelplanet 7987fffed4 feat(vault): hidden vault, file actions submenu, dual controller models, and display sharpness
- Add Hidden Vault system:
  - Secure directory storage under ~/.pixelvr_vault with 0700 permissions.
  - Cheat-code combo unlocking triggered on full grip squeeze (A-B-B-A-X-Y default, customizable).
  - Headset removal / face detection gating and inactivity auto-lock.
  - Automatic download history clearing upon vault lock.
- Add File Actions Submenu (Button Y):
  - In-browser file/folder submenu with Move to Vault, Delete, Move, and Rename.
  - Recursive folder move to vault with collision handling.
  - Folder deletion with confirmation dialog.
- Enhance VR controllers and interactions:
  - Dynamic left and right Steam Frame controller render models.
  - Single laser pointer priority with hand swapping via full grip squeeze.
- Fix video format detection:
  - Correct auto-detection and default projection for high-resolution VR180 SBS media (e.g. 7200x3600).
- Visual sharpness & rendering stability:
  - Render swapchain at native 2160x2160 per eye.
  - SDF font rendering with RMS pixel footprint and stem darkening.
  - Razor-sharp procedural UI anti-aliasing and crisp border highlights without distortion.
- Add unit test suite (tests/test_vault.cpp) and documentation specs.
v1.4.0
2026-10-17 18:06:19 +02:00
PixelplanetandCopilot 858293663b feat(install): one-command installer with automatic Steam library entry
Users can now install with a single command, either piped or from the
release tarball:

  curl -fsSL .../tools/install.sh | sh
  ./install.sh

Tools/install.sh downloads the latest (or a pinned) ARM64 release, verifies
the published checksum, installs to ~/PixelVRPlayer, and registers
"Pixel VR Player" as a Non-Steam Game by editing shortcuts.vdf through an
embedded binary-KeyValues helper (existing shortcuts are preserved, the file
is backed up, and unsupported files are left untouched). Options cover
--dir, --version, --no-steam, --restart-steam and --uninstall. Upgrades never
touch ~/.config/pixelvr or ~/.cache/pixelvr.

Also:
- package-release.sh ships install.sh and a VERSION file in the tarball.
- The release workflow publishes .sha256 checksums and syntax-checks the
  installer before building.
- Docs describe the one-command path for end users.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
v1.3.0
2026-10-17 10:16:06 +02:00
PixelplanetandCopilot 6f9a9ac6b5 feat(ui): unified spatial UI with video thumbnails and richer settings
- Add ThumbnailCache: a worker thread extracts 256x144 thumbnails and media
  metadata with FFmpeg, SBS-aware cropping, and an on-disk cache under
  ~/.cache/pixelvr/thumbs.
- Draw thumbnails on browser cards through a new rounded-corner thumb.frag
  pipeline with per-card descriptor sets.
- Redesign the browser as a sidebar + card grid, with horizontal stick
  navigation and direct shortcuts to Network/Home/Videos/Downloads/Drives.
- Expand Settings: screen curvature, UI text scale and colour, accent colour
  and UI distance, organised into sections.
- Downloads window: per-job state, progress, speed and ETA, plus pause/resume
  and cancel-active controls.
- Decoder: multi-threaded software decode and four V4L2 output buffers.
- docs: unified UI concept, redesign plan and mockups.

Release packaging is now reproducible: tools/run.sh is the shipped launcher,
tools/package-release.sh assembles the tarball, and a GitHub Actions workflow
builds it natively on ARM64 for every v* tag. Stop committing release tarballs;
they are attached to releases instead.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
v1.2.0
2026-10-17 09:55:48 +02:00
Pixelplanet ee95d79efe feat(input): trigger selects in the browser, grip toggles the laser, downloads window replaces the browser
- Restore trigger-to-select in the file browser (it is the intuitive gesture);
  A remains an alternative for thumbstick/d-pad navigation. Both skip when the
  laser is resting on a control-bar button, which owns that click.
- Grip now toggles that hand's laser pointer, SteamVR-style: turn one off to
  drive a panel with the stick without the beam fighting it, and to pick the
  pointing hand. The raycast and the beam both honour it per hand.
- Recenter moves from Grip to Bumper (saved grip bindings migrate), since Grip
  is now the laser toggle.
- The downloads window replaces the browser panel instead of stacking over it,
  and browser input is suspended while it (or the confirm dialog) is open.
2026-10-15 20:52:38 +02:00
Pixelplanet e39fd5e77c feat(input): X/Y download buttons; bar clickable with A; Downloads window opens over the browser
- X (or Y) downloads the entry highlighted in the browser. A dedicated
  physical button means the trigger never has to double as a pointer click.
- The control bar now accepts A as well as the trigger, and A prefers the
  pointed-at bar button over the browser entry, so the bar always works.
- The downloads window was gated on !browser_.isOpen(), so pressing its bar
  button while browsing appeared to do nothing; it now opens over the browser.
- Log control-bar clicks to make input routing diagnosable.
2026-10-15 20:35:23 +02:00
Pixelplanet 47836de7d8 docs: document the A-to-open / trigger-to-point control scheme and Download button v1.1.0 2026-10-15 20:25:38 +02:00
Pixelplanet 3164a84545 feat(input): A opens the browser selection, dedicated Download control-bar button
- The trigger was overloaded (control bar + list activation), so the bar was
  unreachable while the file browser was open. A now opens/activates the
  highlighted entry; the trigger is pointer-only.
- New CtrlButton::Download in the control bar downloads the focused entry
  (folders still prompt with the size). Downloads window button gets its own
  list icon so the two are distinguishable.
- Fix the raycast: panel hit tests used an early 'continue' when the ray missed
  the panel, which swallowed rays aimed at the control bar (drawn below the
  panel) and at the timeline/time readout. They now fall through to the bar.
2026-10-15 20:24:27 +02:00
Pixelplanet b31cc5a58e README: document the release install flow and current feature set v1.0.0 2026-10-15 20:09:09 +02:00
Pixelplanet 85b0ab69cc Control-bar clicks work while browsing (bar gated separately from viewpoint/transport); open file browser on launch when no clip given 2026-10-15 20:03:05 +02:00
Pixelplanet 1b9c931036 Keep control bar visible while the file browser is open (bar sits below the panel) so Downloads is reachable directly 2026-10-15 19:58:40 +02:00
Pixelplanet f045b7b340 Fix settings block brace after stick-select change 2026-10-15 19:52:32 +02:00
Pixelplanet 790e9e7352 Stick-select with trigger in browser+settings; no auto-play on download completion (fixes playback interruption); finished folder opens in browser 2026-10-15 19:51:53 +02:00
Pixelplanet df5174034a File browser stays interactive during downloads (was gated on isBusy which includes dlActive) 2026-10-15 19:44:41 +02:00
Pixelplanet 483f77ba13 Add navigation diagnostics (beginScan/defer/scan-complete) 2026-10-15 19:32:29 +02:00
Pixelplanet ffd21b56bf Do not auto-close the browser when a download starts (only show downloads window if browser closed) 2026-10-15 19:25:29 +02:00
Pixelplanet 398d8de4eb Remove auto-pause while browsing: child process has its own SMB session so downloads keep running 2026-10-15 19:11:51 +02:00
Pixelplanet a49ea9ad61 Folder download live progress (completed + in-flight file); auto-pause child while browsing so listing always responds 2026-10-15 19:06:44 +02:00
Pixelplanet d3f1f05ef3 Download child via posix_spawn (fork deadlocks in multithreaded process); stdin from /dev/null; log spawn cmd 2026-10-15 19:01:35 +02:00
Pixelplanet 20db824464 Download child uses smbclient (curl smb unsupported here); red X failed badge; larger browser rows (kRowH 0.105) 2026-10-15 18:58:50 +02:00
Pixelplanet 05ef47948e Downloads via curl child process (own SMB connection): concurrent SMB browsing + downloads, SIGSTOP/SIGCONT pause, SIGKILL stop 2026-10-15 18:54:07 +02:00
Pixelplanet 5659a43b51 Downloads: ETA shows --:-- when paused/stalled; auto-open downloads window and close browser on download start 2026-10-15 18:51:42 +02:00
Pixelplanet 772d91f6e9 Raycast: downloads panel/modal takes priority over browser (fix modal clicks); guard stale scanning_ flag 2026-10-15 18:42:47 +02:00
Pixelplanet 123650ed19 Downloads yield while browser open (fix unusable browser); log modal button hover 2026-10-15 18:32:57 +02:00