Skip to content

fix: refine immersive XR input and passthrough UX - #147

Merged
comfuture merged 19 commits into
mainfrom
fix/xr-status-input-safety
Aug 11, 2026
Merged

fix: refine immersive XR input and passthrough UX#147
comfuture merged 19 commits into
mainfrom
fix/xr-status-input-safety

Conversation

@comfuture

Copy link
Copy Markdown
Owner

Summary

  • harden WebXR hand status gestures, direct touch handling, and action arming
  • make pane manipulation and placement consistent across hand pinch, direct touch, and controllers
  • scale hand-pinch lateral movement with pane depth and support remote scrolling
  • improve XR status ergonomics with toggle controls and safer active voice-session behavior
  • improve passthrough readability while keeping panes visible above room surfaces and hiding synthetic hand-joint outlines

Root cause and impact

Pane movement mixed fixed-radius and 1:1 mappings, so lateral movement became disproportionately small at distance and gesture classification could feel inconsistent. Scroll arrows were positioned and wired mainly for direct touch, leaving remote pinch and controller rays ineffective. Room meshes could also write depth in front of status panes. During an active voice session, the central orb remained selectable and could accidentally stop voice. Finally, dark translucent transcript bubbles and synthetic hand-joint outlines reduced passthrough clarity.

This change keeps input state stable, scales manipulation by depth, exposes scroll actions to all supported XR input paths, prevents room geometry from occluding panes, disables the active-session orb target, and refines passthrough/status visuals.

Validation

  • corepack pnpm --filter @codori/webxr test — 187 tests passed
  • corepack pnpm --filter @codori/webxr lint
  • corepack pnpm --filter @codori/webxr build
  • git diff --check
  • Iterative Meta Quest/WebXR testing confirmed pane movement, remote/controller scrolling, room-surface visibility, active voice-orb safety, status toggles, and passthrough transcript contrast
  • Passthrough hand-outline hiding is covered by focused and full automated tests

Known boundary

Automated coverage cannot represent every headset/input profile, so the primary Quest paths were exercised directly while the final passthrough-outline behavior is protected by automated tests.

@comfuture
comfuture marked this pull request as ready for review August 11, 2026 08:30

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6f621d64c6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/webxr/src/interaction-system.ts
Comment thread packages/webxr/src/status-window-placement.ts Outdated
Comment thread packages/webxr/src/status-window-model.ts Outdated

Copy link
Copy Markdown
Owner Author

@codex review
Review head: 0bf0e1a7a09f3073d47536aead881c3b3aeb6fc9

Please re-review the resolved controller-only scrolling, stable wrist-anchor reacquisition, and autoplay recovery action changes, and check for regressions in adjacent XR input behavior.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0bf0e1a7a0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/webxr/src/status-window-placement.ts Outdated

Copy link
Copy Markdown
Owner Author

@codex review
Review head: 3424126e00708865044a8f98d7cd6e904a5d5fa5

Please verify that wrist-anchor reacquisition now requires samples to remain within a fixed stability radius for the full confirmation interval, including the new continuous-drift regression.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Already looking forward to the next diff.

Reviewed commit: 3424126e00

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@comfuture
comfuture merged commit 313e2cf into main Aug 11, 2026
1 check passed
@comfuture
comfuture deleted the fix/xr-status-input-safety branch August 11, 2026 08:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant