24 Commits
Author SHA1 Message Date
Fauxx b554542559 v0.93.3: 3D side by side, YouTube Premium, your Channels and the notification bell (#5)
## What and why

Feature branch for the next release (v0.89.0 to v0.93.3), into
`develop`. No issue: the maintainer's own work, partly from feedback by
[u/TehSuperFruitSnack](https://www.reddit.com/user/TehSuperFruitSnack/)
on Reddit and [@damics80](https://x.com/damics80) on X.

- **3D side by side** (asked for by [@damics80](https://x.com/damics80);
the VR180 case spotted by
[u/TehSuperFruitSnack](https://www.reddit.com/user/TehSuperFruitSnack/)):
two new formats, **180° 3D side by side** (VR180) and **Cinema 3D side
by side** (regular 3D videos on the cinema screen), each eye seeing its
half of the frame, the glass and the screen's glow included.
- **YouTube Premium:** **1080p Premium** in the Quality menu and **Jump
ahead** at the seek bar's end (shown while YouTube offers it), both with
the Diamond.
- **Subscriptions:** You → **Channels** (your subscriptions, with
YouTube's sort choices as pills and a flag for "Purchased" channels) and
the **notification bell** on the Channel panel.
- **Format menu:** every format with its icon (`2d_2`, `3d_2` and the
rest); the button always says "Format".
- **Fixes:**
- videos didn't open from the Channel panel or History when VR started
on a channel page
  - menu rows covered the pointing ring of the row next to them
  - the Channels list stopped after its first page
- **Docs:**
  - decision 0002 (StreamXR never bypasses the site's player, and why)
  - the Premium audit
- the README's "What's new" and roadmap (Chrome Web Store as 1.0;
Twitch, Jellyfin / Plex, music streaming and an experimental barebones
mode after it)
- Meta Quest 2 reported working
([u/TehSuperFruitSnack](https://www.reddit.com/user/TehSuperFruitSnack/))

## How

- **3D:** `formats.js` gains `flatsbs` / `180sbs` and `eyeSpans()`.
`video-sphere.js` and `cinema-screen.js` crop each eye's half
(`uUvXform` / `uUvX`), and `panel-pass.js` samples the glass backdrop
per eye (`uvX`). The cinema screen takes one eye's shape: half-SBS 16:9
stays 16:9, two full pictures (wider than 2.5:1) get half the frame's
width.
- **Premium:** `youtube-player.js` `quality()` keeps the Premium entry
apart (its own `formatId`), `setQuality('premium')` picks it, and
`hasPremium()` reads the top bar's logo. `jumpAhead()` clicks YouTube's
own Jump ahead pill (a script-sent Ctrl + → didn't work from VR).
- **Subscriptions:** `youtube-subscriptions.js` `channels(sort)` reads
the Manage page's shelves and sort choices (`channelsOn`, `sortsOf`);
`youtube-channel.js` `bellOf` reads a channel's bell.
- **Shell additions (all generic, no site fields):**
- floating menus on side panels: `host.openMenu`, the controller's
`menu()`
  - `host.panel(id)`
  - the Profile style's `iconAction` and `rectOf`
  - round cards: `fit: 'round'`
  - icons with their own colour: `drawIcon`
  - a seek-row button slot: `extras.seek`
  - `disabled` quality levels
  - the button row narrowing when it's full
- **Navigation:** `yt-navigate` is now sent from `ytd-page-manager`
(from `ytd-app` it was ignored on channel pages).

## Tested on

- Headset and controllers: Valve Steam Frame with its controllers
- VR runtime / connection: SteamVR, "Stream VR without game"
- Browser and version: Google Chrome <!-- your version, from
chrome://version -->
- Signed in to YouTube: yes, with YouTube Premium
- What I tried in VR:
  - both 3D formats, with each eye and the glass
  - 1080p Premium on and off
- Jump ahead (shown only with YouTube's pill, greyed out while paused,
absent on live replays)
  - You → Channels, its sort pills and the Purchased flag
  - the bell, from the Channels list and from the playing video
  - opening videos from a channel page
  - the Format and bell menus
- Not yet: Skip ad taking Jump ahead's spot during an ad (needs a
non-Premium view).

## Checklist

What the automatic summary and the Checks can't see:

- [x] There's an agreed issue for this, and this PR does only that one
thing. *(Maintainer's feature branch; no issue.)*
- [x] I understand every line of this change and can explain it in
review.
- [x] I tested it in a real VR session on the hardware listed above.
- [x] YouTube access stays in `src/sites/youtube/page/youtube-*.js`;
tunables are in the config files.
- [x] Every new file and function has its comment, and comments I
touched match the code.
- [x] New files are in `manifest.json` in the right **order** (the
summary only checks they're listed).
- [x] No new permissions, or they were agreed in the issue.

<!-- pr-summary:start -->
## Automatic summary

<!-- Filled in by .github/workflows/pr-summary.yml on every push; edits
here are replaced. -->

**FauxxYT** wants to merge `FauxxYT:Feature-2-Premium-and-Subscrptions`
into `develop`: 3 commits, 38 files (+1051 −193).

- ⚠️ No linked issue: add `Closes #<issue>` under "What and why" (an
agreed issue is required).
- ✅ Version: 0.88.1 → 0.93.3
- ✅ `CHANGELOG.md` updated
- ⚠️ The shell should name no site, but added lines mention YouTube in:
`src/streamxr/shared/formats.js` (fine in comments giving an example;
otherwise move it to the provider).

#### Commits (3)

| Commit | Message | Author |
|---|---|---|
|
[`8078578`](https://github.com/FauxxYT/StreamXR/commit/80785784c9384a76602b886ecf5efc39d9565fad)
| Update documentation with some feedback and a new design decision for
not bypassing the YouTube player | @FauxxYT |
|
[`fd80f53`](https://github.com/FauxxYT/StreamXR/commit/fd80f536218c4bb8156effc7bfaa412d18494606)
| Interim Commit before finishing features | @FauxxYT |
|
[`ef539f9`](https://github.com/FauxxYT/StreamXR/commit/ef539f9a39f378a154b0d5a6c2c4f51a767e3ac4)
| Added: 3D Side-By-Side support for VR180 and 2D Cinema, YouTube
Premium (high bitrate 1080p and Jump Ahead), Your Channels, Notification
Bell on Channel Panel, and tidied up Format menu on Control panel |
@FauxxYT |

<details><summary>Files changed (38)</summary>

- ✏️ `AGENTS.md` +4 −1
- ✏️ `ARCHITECTURE.md` +10 −3
- ✏️ `CHANGELOG.md` +146 −0
- ✏️ `README.md` +51 −44
- 🆕 `docs/decisions/0002-site-player-only.md` +70 −0
- ✏️ `docs/design-choices.md` +17 −0
- ✏️ `docs/features/subscriptions-page.md` +16 −3
- ✏️ `docs/features/video-page.md` +19 −4
- ✏️ `docs/known-issues.md` +1 −1
- ✏️ `docs/whats-left.md` +62 −14
- ✏️ `docs/youtube.md` +40 −4
- ✏️ `manifest.json` +1 −1
- ✏️ `src/core/page/vr-panel/panel-pass.js` +21 −11
- ✏️ `src/core/page/vr-panel/panel-ui.js` +50 −14
- ✏️ `src/core/page/vr-panel/popups-ui.js` +11 −4
- ✏️ `src/core/page/vr-panel/styles/kit.js` +8 −2
- ✏️ `src/core/page/vr-panel/styles/profile.js` +12 −3
- ✏️ `src/core/page/vr-panel/symbols.js` +29 −1
- ✏️ `src/core/page/vr-panel/vr-panel.js` +42 −6
- ✏️ `src/sites/youtube/page/provider/browse.js` +39 −6
- ✏️ `src/sites/youtube/page/provider/channel.js` +65 −4
- ✏️ `src/sites/youtube/page/provider/extras.js` +18 −4
- ✏️ `src/sites/youtube/page/provider/panels.js` +7 −1
- ✏️ `src/sites/youtube/page/provider/provider.js` +26 −2
- ✏️ `src/sites/youtube/page/provider/strings-en.js` +5 −0
- ✏️ `src/sites/youtube/page/provider/strings-es.js` +5 −0
- ✏️ `src/sites/youtube/page/youtube-channel.js` +40 −1
- ✏️ `src/sites/youtube/page/youtube-page.js` +6 −3
- ✏️ `src/sites/youtube/page/youtube-player.js` +64 −11
- ✏️ `src/sites/youtube/page/youtube-subscriptions.js` +78 −10
- ✏️ `src/streamxr/page/cinema-screen.js` +26 −12
- ✏️ `src/streamxr/page/video-sphere.js` +12 −7
- ✏️ `src/streamxr/shared/formats.js` +17 −8
- ✏️ `src/streamxr/shared/strings-en.js` +4 −0
- ✏️ `src/streamxr/shared/strings-es.js` +4 −0
- ✏️ `src/streamxr/ui/shared/formats.js` +17 −8
- ✏️ `src/streamxr/ui/shared/strings-en.js` +4 −0
- ✏️ `src/streamxr/ui/shared/strings-es.js` +4 −0

</details>
<!-- pr-summary:end -->
2026-10-17 19:51:10 -07:00
Fauxx ef539f9a39 Added: 3D Side-By-Side support for VR180 and 2D Cinema, YouTube Premium (high bitrate 1080p and Jump Ahead), Your Channels, Notification Bell on Channel Panel, and tidied up Format menu on Control panel 2026-10-17 19:36:41 -07:00
Fauxx fd80f53621 Interim Commit before finishing features 2026-10-17 12:16:17 -07:00
Fauxx 80785784c9 Update documentation with some feedback and a new design decision for not bypassing the YouTube player 2026-10-17 11:20:34 -07:00
Fauxx 605972dfc4 Feature 1 live chat (#2)
## What and why

Release **v0.88.1** (`Feature-1-Live-Chat` → `develop`). No issue: this
is the maintainer's release merge, not an outside contribution.

It brings everything since v0.78.9: 
- **live chat** (reading, reactions, typing with emoji pages, Top fans)
- **chat replays**
- **movable side panels**
- **hide everything with one trigger pull**
- **Auto-hide while paused**.
It also adds Quality menu icons, clearer controller icons, and fixes.
The full list is in `CHANGELOG.md` (0.78.10 to 0.88.1) and the README's
"What's new".

## How

- Live chat: `src/sites/youtube/page/youtube-chat.js` (YouTube's chat
requests) and the panel controller
`src/sites/youtube/page/provider/live-chat.js`, drawn by the new shell
style `src/core/page/vr-panel/styles/chat.js`. The shell only got
generic registry options (`available`, `autoOpen`, `stays`), no
chat-specific fields.
- Movable side panels and recenter carrying moves: `vr-panel.js`,
`orbiters-ui.js`, `math3d.js` (`invertRigid`), with the "Recenter resets
panels" switch in `safe-zone-options.js`.
- Trigger-to-hide and "Auto-hide while paused": `vr-panel.js` and
`fade-options.js`.
- Docs: README (What's new, help-test list for the live chat, Meta Quest
2 reported by u/TehSuperFruitSnack), `docs/youtube.md` (Live chat
findings), `design-choices.md`, `whats-left.md`, `known-issues.md`,
`hardware.md`.

## Tested on

- Headset and controllers: Valve Steam Frame with its controllers
- VR runtime / connection: SteamVR, streamed with "Stream VR without
game"
- Browser and version: Google Chrome <!-- version: chrome://version -->
- Signed in to YouTube: yes
- What I tried in VR: each version from 0.79.0 to 0.88.1 as it was
built. Live chat on live streams (reading, reactions, typing, Top fans,
retry while loading), chat replays (plays along, pause, seek), moving
both sides and recentering (with and without "Recenter resets panels"),
trigger-to-hide playing and paused, Auto-hide while paused on and off.

## Checklist

What the automatic summary and the Checks can't see:

- [x] There's an agreed issue for this, and this PR does only that one
thing. *(Release merge by the maintainer; no issue.)*
- [x] I understand every line of this change and can explain it in
review.
- [x] I tested it in a real VR session on the hardware listed above.
- [x] YouTube access stays in `src/sites/youtube/page/youtube-*.js`;
tunables are in the config files.
- [x] Every new file and function has its comment, and comments I
touched match the code.
- [x] New files are in `manifest.json` in the right **order** (the
summary only checks they're listed).
- [x] No new permissions, or they were agreed in the issue.

<!-- pr-summary:start -->
## Automatic summary

<!-- Filled in by .github/workflows/pr-summary.yml on every push; edits
here are replaced. -->

**FauxxYT** wants to merge `FauxxYT:Feature-1-Live-Chat` into `develop`:
8 commits, 36 files (+2084 −171).

- ⚠️ No linked issue: add `Closes #<issue>` under "What and why" (an
agreed issue is required).
- ✅ Version: 0.78.9 → 0.88.1
- ✅ `CHANGELOG.md` updated
- ✅ Every source file is listed in `manifest.json`
- ✅ `ARCHITECTURE.md` updated
- ⚠️ The shell should name no site, but added lines mention YouTube in:
`src/core/page/vr-panel/styles/info.js` (fine in comments giving an
example; otherwise move it to the provider).

#### Commits (8)

| Commit | Message | Author |
|---|---|---|
|
[`5dfddfb`](https://github.com/FauxxYT/StreamXR/commit/5dfddfb746e15b862181305495944d8ad162c598)
| Minor change to `CHANGELOG.md` | @FauxxYT |
|
[`b49b3c7`](https://github.com/FauxxYT/StreamXR/commit/b49b3c79b34b8370c9761e2f219883dd65a30aa8)
| Start preparing for Live Chat integration and add icons to each popup
menu item in the Resolution popup | @FauxxYT |
|
[`dec401c`](https://github.com/FauxxYT/StreamXR/commit/dec401c2be0766ae31027756b8a3803748b66182)
| Create Live Chat panel on the right Toolbar. See Top Chat and Live
Chat | @FauxxYT |
|
[`e93b1a9`](https://github.com/FauxxYT/StreamXR/commit/e93b1a9a627dbe37e8679ed096f1326f7613b050)
| Update Design Choices document and add support for reactions in live
chat | @FauxxYT |
|
[`80934fc`](https://github.com/FauxxYT/StreamXR/commit/80934fcab4bc3eda0fcbf7754a829e859bcaef45)
| Added typing in Chat | @FauxxYT |
|
[`200a864`](https://github.com/FauxxYT/StreamXR/commit/200a8644c60952bee4fd3cc777ea781786a666a4)
| Add support for Live Chat Replays | @FauxxYT |
|
[`3b0d26d`](https://github.com/FauxxYT/StreamXR/commit/3b0d26d0823d1ab1fbc85e1598cebf46fe94d773)
| Hide/Show panels when clicking on empty space and added "Auto-Hide
While Paused" setting to enable auto-hide while paused | @FauxxYT |
|
[`8f5815d`](https://github.com/FauxxYT/StreamXR/commit/8f5815dc1a8ff5fbad3c1e7962b9ba0d0d666065)
| Update docs and give proper credit | @FauxxYT |

<details><summary>Files changed (36)</summary>

- ✏️ `AGENTS.md` +5 −5
- ✏️ `ARCHITECTURE.md` +25 −9
- ✏️ `CHANGELOG.md` +183 −6
- ✏️ `README.md` +56 −9
- ✏️ `docs/Spatial-Layout.md` +4 −2
- ✏️ `docs/design-choices.md` +55 −2
- ✏️ `docs/features/video-page.md` +37 −10
- ✏️ `docs/hardware.md` +7 −0
- ✏️ `docs/known-issues.md` +13 −0
- ✏️ `docs/whats-left.md` +7 −2
- ✏️ `docs/youtube.md` +116 −0
- ✏️ `manifest.json` +4 −1
- ✏️ `src/core/page/controllers/icons.js` +3 −1
- ✏️ `src/core/page/math3d.js` +14 −1
- ✏️ `src/core/page/vr-panel/fade-options.js` +15 −6
- ✏️ `src/core/page/vr-panel/keyboard.js` +62 −11
- ✏️ `src/core/page/vr-panel/orbiters-ui.js` +57 −14
- ✏️ `src/core/page/vr-panel/panel-ui.js` +2 −1
- ✏️ `src/core/page/vr-panel/popups-ui.js` +33 −15
- ✏️ `src/core/page/vr-panel/safe-zone-options.js` +15 −5
- 🆕 `src/core/page/vr-panel/styles/chat.js` +226 −0
- ✏️ `src/core/page/vr-panel/styles/info.js` +175 −4
- ✏️ `src/core/page/vr-panel/styles/kit.js` +6 −4
- ✏️ `src/core/page/vr-panel/symbols.js` +9 −0
- ✏️ `src/core/page/vr-panel/vr-panel.js` +162 −55
- ✏️ `src/core/shared/strings-en.js` +4 −0
- ✏️ `src/core/shared/strings-es.js` +4 −0
- ✏️ `src/core/ui/shared/strings-en.js` +4 −0
- ✏️ `src/core/ui/shared/strings-es.js` +4 −0
- 🆕 `src/sites/youtube/page/provider/live-chat.js` +370 −0
- ✏️ `src/sites/youtube/page/provider/panels.js` +10 −3
- ✏️ `src/sites/youtube/page/provider/provider.js` +12 −5
- ✏️ `src/sites/youtube/page/provider/strings-en.js` +22 −0
- ✏️ `src/sites/youtube/page/provider/strings-es.js` +22 −0
- 🆕 `src/sites/youtube/page/youtube-chat.js` +340 −0
- ✏️ `src/streamxr/page/xr-session.js` +1 −0

</details>
<!-- pr-summary:end -->
2026-10-17 09:07:37 -07:00
Fauxx 8f5815dc1a Update docs and give proper credit 2026-10-17 08:50:46 -07:00
Fauxx 3b0d26d082 Hide/Show panels when clicking on empty space and added "Auto-Hide While Paused" setting to enable auto-hide while paused 2026-10-17 08:42:59 -07:00
Fauxx 200a8644c6 Add support for Live Chat Replays 2026-10-17 08:28:52 -07:00
Fauxx 80934fcab4 Added typing in Chat 2026-10-16 17:40:14 -07:00
Fauxx e93b1a9a62 Update Design Choices document and add support for reactions in live chat 2026-10-16 10:29:24 -07:00
Fauxx dec401c2be Create Live Chat panel on the right Toolbar. See Top Chat and Live Chat 2026-10-16 09:53:07 -07:00
Fauxx b49b3c79b3 Start preparing for Live Chat integration and add icons to each popup menu item in the Resolution popup 2026-10-16 09:06:34 -07:00
Fauxx 5dfddfb746 Minor change to CHANGELOG.md 2026-10-16 08:28:04 -07:00
Fauxx 135b673987 Remove Demo video, not working on GitHub v0.78.9 2026-10-15 18:41:01 -07:00
Fauxx adcfffd128 Replace Demo video with a smaller sized one 2026-10-15 18:38:52 -07:00
Fauxx 94be78ffd2 Correct video reference in README.md 2026-10-15 18:35:19 -07:00
Fauxx 35f103cc3e Update README.md to include note that I'll work on Native Steam Frame when available and add a demo video to README.md 2026-10-15 18:33:12 -07:00
Fauxx c1c938eaa6 Add instructions for how to stream your PC to your Steam Frame 2026-10-15 15:11:56 -07:00
Fauxx acbeefe6f3 Fix a cache fallback issue that could potential break if YouTube makes an unexpected change. 2026-10-15 15:00:53 -07:00
Fauxx 2e38f86c22 Add minor fix to What's Left document 2026-10-15 14:42:53 -07:00
Fauxx 8ceda46d5b Add source code 2026-10-15 14:42:17 -07:00
Fauxx 1c39ab3f88 Add Dependabot YAML and Security MD file 2026-10-15 13:51:29 -07:00
Fauxx 18ad84797f Include GitHub files to prepare repository for code upload 2026-10-15 13:35:42 -07:00
Fauxx 1530efcb4a Initial commit 2026-10-15 11:47:24 -07:00