17 Commits
Author SHA1 Message Date
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.
2026-10-17 18:06:19 +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>
2026-10-17 09:55:48 +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 3c48eb34e4 UI: content-sized centered buttons at panel bottom for downloads + confirm modal; bigger in-progress dot, smaller tick; darker model 2026-10-15 16:29:06 +02:00
Pixelplanet 587f8baebf Non-blocking navigation (no main-thread scan join); downloads dialog buttons + modal confirm with folder size; darker model; bigger badge 2026-10-15 15:09:10 +02:00
Pixelplanet 3bd5904e84 Darker matte model; downloads: pause/stop/clear + click-to-play window, partial-file cleanup, browser scan priority during download 2026-10-15 14:58:26 +02:00
Pixelplanet 60b23fd8f6 Model darker matte + re-enable status screen node; wider panels/text; download yields SMB lock (responsive browser); drop post-completion status line 2026-10-15 14:44:15 +02:00
Pixelplanet c9dc24293f Model: matte black diffuse (no shimmer); browser rows show clamped name + size; Downloads window with speed/ETA + control-bar button with active/done badge 2026-10-15 14:34:12 +02:00
Pixelplanet 90fba4520c Downloads: any file type + recursive folder copy with confirm; browser shows type/size; pointer drives selection; darker black model with highlighted labels 2026-10-15 13:35:43 +02:00
Pixelplanet dd641b8348 Controller: specular/rim shading; native-button remap (press-to-bind); downloads: destination setting + background status line + always-poll 2026-10-15 12:25:43 +02:00
Pixelplanet 091f86ac68 Controller: tapered laser from front, pose smoothing, hemisphere shading 2026-10-15 11:04:33 +02:00
Pixelplanet 56a71a9e69 Controller models: place at runtime render-model space (fix position), connect laser to model, brighten matte-black skin 2026-10-15 10:28:07 +02:00
Pixelplanet c9a60b7468 Controller models: real PNG base-color textures (stb_image) with per-submesh materials + lit textured shader 2026-10-15 09:26:49 +02:00
Pixelplanet a564c59638 Fix HSBS detection (->SBS), half-vs-full SBS/TB screen aspect (fixes narrow), sharper SDF text (96px, no mip blur, 1px edge) 2026-10-15 08:07:18 +02:00
Pixelplanet 5195553601 Sharper menu text: render font atlas as SDF with coverage fallback, screen-space AA in text shader 2026-10-14 20:01:00 +02:00
Pixelplanet 0b70d21248 Flat SBS/TB: detect from name+aspect and render per-eye (split UV) in the flat quad; add backlog to TODO 2026-10-14 19:57:20 +02:00
Pixelplanet 17abf69ff1 Pixel VR Player: OpenXR/Vulkan VR video player with zero-copy dma-buf decode, controls, settings, and stats 2026-10-04 18:39:52 +02:00