Commit Graph
71 Commits
Author SHA1 Message Date
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
Pixelplanet 2665786657 Hide control bar during downloads modal (fix modal click); 1MiB SMB reads for throughput 2026-10-15 18:26:43 +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 7049ea6c1e Restore scanMutex_/scanResult_ declarations 2026-10-15 15:09:29 +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 a1e1cbff5e Fix missing total var in poll 2026-10-15 14:58:40 +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 fc8b958fb6 Skip status node again (tiny-square artifact); remove head-locked download line; download shows size/%/ETA (folder pre-walk); bigger badge 2026-10-15 14:50:52 +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 93ad194ef6 Declare Browser::focused() 2026-10-15 13:35:57 +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 d977641ade Fix model regression (always draw parts, guard degenerate node poses); add Downloads panel UI + keep browser hint/refusal message 2026-10-15 13:01:23 +02:00
Pixelplanet b9e246279d Render-model node animation: ordinal fallback when node names unavailable + skip status node; download refusal shown on-screen 2026-10-15 12:57:19 +02:00
Pixelplanet af1a940efb Native render-model node animation (xrGetRenderModelStateEXT) + asset node names; download logging/diagnostics + persistent background status 2026-10-15 12:53:40 +02:00
Pixelplanet 3629e10b4a Native model animation via glTF node INDEX (asset node names unavailable); skip stray 'status' LCD square; downloads: allow during scan + clearer feedback/hint 2026-10-15 12:44:01 +02:00
Pixelplanet 9a26d25961 Native controller animation (xrGetRenderModelStateEXT node poses -> button-press motion); downloads: hover-select fix, logging, downloads list 2026-10-15 12:40:18 +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 6268424df9 Native frame profile: probe each binding path, keep accepted, log rejects (self-correcting) 2026-10-15 11:58:52 +02:00
Pixelplanet 3f571b355b Native Steam Frame controller: enable XR_VALVE_frame_controller_interaction + target /interaction_profiles/valve/frame_controller; log active profile 2026-10-15 11:33:31 +02:00
Pixelplanet 091f86ac68 Controller: tapered laser from front, pose smoothing, hemisphere shading 2026-10-15 11:04:33 +02:00
Pixelplanet 7c6dc52d6a Fix brace typo in controller-model placement 2026-10-15 10:29:10 +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 6e52b544ec Controller models: add depth buffer (fix see-through) + render at grip pose (fix forward tilt) 2026-10-15 09:17:08 +02:00
Pixelplanet ceeff8483a Start real controller models: parse runtime glTF (cgltf) and upload the real mesh to the model pipeline (uint32 indices) 2026-10-15 08:54:40 +02:00
Pixelplanet 848e2661d7 Fix decode-fps underflow on reload (garbage number); enlarge decoded-frame queue to absorb bursty decode (reduces low-fps judder) 2026-10-15 08:43:13 +02:00
Pixelplanet fd2fcbc57d Smooth decode-fps stat (EMA) and enlarge SMB prefetch to 64 MiB for high-bitrate streaming 2026-10-15 08:21:17 +02:00
Pixelplanet 00591b6e4e Track/language selection as pick-lists (sub-menus) with greyed-out rows when there is nothing to choose 2026-10-15 08:19:06 +02:00
Pixelplanet 57de71d506 Full-pitch recenter: capture head pitch and tilt the screen, control panels, and 360/180 sphere so recenter works while reclining/looking up 2026-10-15 08:13: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