- 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.
- 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>
- 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.