Files

61 lines
4.1 KiB
Markdown

# Known issues and open questions
Things that are known not to work, haven't been verified, or were tried and dropped.
Planned features are in the [features/](features/) folder; limits of the approach (DRM, WebXR
permissions, Firefox) are in [ARCHITECTURE.md](../ARCHITECTURE.md#known-limits).
## Not verified yet
- **Signed-in Home feeds** other than the main one, History, Playlists, Watch later and
Liked videos (those were verified in 0.35) (`youtube-home.js`).
- **Live chat typing (0.81.0)**: sending a message was checked from the console (text only);
in the headset, check typing, Send / Enter, a channel emoji in a message (sent by its id, as
YouTube's client does), and a chat you can't type in (YouTube's reason should show instead
of the field: that shape wasn't seen yet).
- **Live chat (0.79.0)**: written from probes of real chats (text messages, the welcome notice,
emojis, banners) and, for what didn't show up during the probes, from the shapes YouTube
is known to send: **Super Chats, Super Stickers, memberships and gifted memberships, the
owner / moderator / member badges, deletions, pinned messages** (`youtube-chat.js`). Check
them on a busy stream. (The README's "How you can help" asks users to report them.)
- **Chat replays (0.87.0)**: work in the headset (plays along, pauses, seeks). Untried: an ad
during a replay (its time could count as a seek and reload the chat). With YouTube's chat
hidden the replay is still found (probe 11); if its chat frame were ever missing, there's no
pop-out replay page to fall back on (HTTP 400), so it would end in "Couldn't load the chat".
## Known quirks
- **Captions on 180°/360° need improvement** (the maintainer, 0.77.1: "good enough for now"): they
sit 22° below the horizon and glide after your view once you look 25° aside
(`captions-overlay.js` `headAnchor`, `SETTINGS`). Ideas to try: a placement setting (height,
distance, size), following on a slower curve or only after a pause, pinning them to the
video's front like the pause symbol, a fade while they move.
- **No controller vibration** (0.73.1): Chrome gives the Steam Frame's controllers no
vibration API (docs/hardware.md), so the Vibration switch is greyed out with a note.
- **Glass popups blur only the video** (seen by the maintainer in 0.67.2): the glass reads the
video's own picture (the renderer's `backdrop()`, `panel-pass.js`), so a floating menu,
the dialog or the search suggestions show the blurred video even where they stand in
front of the controls panel or a side panel, not the buttons and panels behind them.
Possible fix, put off by the maintainer: while a popup or dialog is open, copy the finished
view (each eye, after everything else is drawn) into a texture with mipmaps and let the
popup's glass blur that instead (`blitFramebuffer` from the layer's framebuffer, which
may be multisampled; check the browser allows it). Costs a full-view copy and blur each
frame, only while a popup is open.
- A channel's **Featured** tab is missing for channels you subscribe to unless the creator
set a "featured video for returning subscribers". That's YouTube's behaviour.
- The Channel header's subscribed state can be wrong for a channel whose Home tab features
other channels; it's only used when the watch page doesn't say.
- Text matching assumes **English** YouTube: some readers recognise YouTube's own words
(the "All" chip, "Joined", an ad's "1 of 2", the Jump ahead pill). This is about what YouTube writes;
StreamXR's own words follow the interface language (Settings → Language).
- Replies to replies (YouTube's newer nested comment threads) aren't shown; one level is.
## Tried and dropped
- **A sphere distance for 180° / 360°** (like the cinema screen's Distance slider): spheres
are drawn "at infinity" (rotation only), and in 180° it glitched instead of moving.
- **Detecting VR180 by the frame's shape**: VR180 streams are often 16:9 below 2160p; the
player's VR180 flag is used instead.
- **Clicking YouTube's Skip ad button from a script**: YouTube ignores anything but a real
click, hence the separate Skip Helper extension.