feat(lotus): keep your own tile on mobile with the camera off (cinny #265) #58

Merged
jared merged 1 commits from feat/mobile-self-tile into lotus 2026-10-19 14:58:36 -04:00
Owner

For LotusGuild/cinny#265 (phone call: your own tile isn't shown).

Upstream's one-on-one mobile layout only shows the local PiP while your camera is on (pip: videoEnabled ? media.local : undefined). In Lotus voice rooms cameras are almost always off, so on a phone you never saw yourself, or your own speaking ring. The desktop layout always shows it; mobile now does the same, and the tile falls back to your avatar.

  • CallViewModel.ts: oneOnOneMobileLayoutMedia$ always sets pip: media.local; it no longer needs the camera state.
  • CallViewModel.test.ts: four tests expected no self-tile while the camera was off, and now expect it. The first is renamed to say so; its marbles are b-cb (shown, small after a tap, large after the second, still shown when the camera turns off).

Verified

  • Full suite under Node 24 (as CI): 751 passed, 9 skipped. Before the change, those 4 tests (×2 modes) were the only failures. Locally Node 20 can't run this suite (Promise.withResolvers).
  • Browser, two-person call, 390×844 phone: your tile shows bottom-right with avatar, decoration, name and mic state.

🤖 Generated with Claude Code

https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5

For LotusGuild/cinny#265 (phone call: your own tile isn't shown). Upstream's one-on-one **mobile** layout only shows the local PiP while your camera is on (`pip: videoEnabled ? media.local : undefined`). In Lotus voice rooms cameras are almost always off, so on a phone you never saw yourself, or your own speaking ring. The desktop layout always shows it; mobile now does the same, and the tile falls back to your avatar. - `CallViewModel.ts`: `oneOnOneMobileLayoutMedia$` always sets `pip: media.local`; it no longer needs the camera state. - `CallViewModel.test.ts`: four tests expected no self-tile while the camera was off, and now expect it. The first is renamed to say so; its marbles are `b-cb` (shown, small after a tap, large after the second, still shown when the camera turns off). **Verified** - Full suite under **Node 24** (as CI): 751 passed, 9 skipped. Before the change, those 4 tests (×2 modes) were the only failures. Locally Node 20 can't run this suite (`Promise.withResolvers`). - Browser, two-person call, 390×844 phone: your tile shows bottom-right with avatar, decoration, name and mic state. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
jared added 1 commit 2026-10-19 14:40:27 -04:00
feat(lotus): keep your own tile on mobile with the camera off (cinny #265)
CI / Publish to Gitea npm registry (pull_request) Skipped
CI / Build embedded bundle (pull_request) Successful in 1m57s
fbf8e44276
Upstream drops the local PiP in the one-on-one mobile layout whenever the
local camera is off. In Lotus voice rooms that is nearly always, so on a
phone you never saw yourself or your own speaking ring. Show it as the
desktop layout does; the tile falls back to your avatar. Tests updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
jared merged commit 2c8d20ba82 into lotus 2026-10-19 14:58:36 -04:00
Sign in to join this conversation.