#1 documented as implemented (focusCameraParticipant + MemberGlance "Focus camera" menu); #4 ringtone selection landed, with the remaining active-call non-intrusive-notification work scoped and deferred. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+10
-7
@@ -23,11 +23,12 @@ This document tracks identified bugs, edge cases, and architectural discrepancie
|
|||||||
|
|
||||||
### 1. No Camera Focus During Screenshare
|
### 1. No Camera Focus During Screenshare
|
||||||
|
|
||||||
- **File:** `cinny/src/app/features/call/CallControls.tsx`
|
- **File:** `cinny/src/app/plugins/call/CallControl.ts`, `cinny/src/app/features/call-status/MemberGlance.tsx`
|
||||||
- **Status:** **OPEN**
|
- **Status:** **FIXED ⚠️ UNTESTED** — needs verification in a live call with an active screenshare + a participant on camera
|
||||||
- **Issue:** Automatic screenshare spotlighting forces primary display override, preventing users from manually focusing on camera feeds.
|
- **Issue:** Automatic screenshare spotlighting forces primary display override, preventing users from manually focusing on camera feeds.
|
||||||
- **Root Cause:** Current spotlighting logic prioritizes active screenshare streams over manual participant selections, effectively ignoring or overriding user-initiated focus states.
|
- **Root Cause:** Before this feature there was no UI path to manually pick a camera to focus, so EC's auto-spotlight (which prioritizes an active screenshare) always won.
|
||||||
- **Proposed Fix:** Introduce a manual 'Focus' state that takes precedence over automatic screenshare spotlighting, implemented via a toggle/click UI on participant tiles. Update the video renderer to respect this manual override.
|
- **Fix Applied:** `CallControl.focusCameraParticipant(userId)` switches EC to spotlight mode and clicks that participant's `[data-testid="videoTile"]` inside the EC iframe — in Element Call, clicking a tile in spotlight **pins** it, so the user's explicit selection takes precedence over the auto-pinned screenshare. Exposed via a "Focus camera" item in the `MemberGlance` participant menu (avatar → menu). Falls back to a plain spotlight toggle if the tile isn't rendered (e.g. camera off).
|
||||||
|
- **Architectural note:** EC owns the grid/spotlight renderer inside its iframe; our control is DOM-level tile clicks. The pin persists until changed, so a one-shot focus is sufficient. A continuously-enforced "sticky" focus that re-pins on every EC spotlight change was deliberately **not** built — it would require fighting EC's internal state on each mutation and risks flicker.
|
||||||
|
|
||||||
### 2. Chat Background Animation Flickering
|
### 2. Chat Background Animation Flickering
|
||||||
|
|
||||||
@@ -48,11 +49,13 @@ This document tracks identified bugs, edge cases, and architectural discrepancie
|
|||||||
### 4. DM and Group Message Calls
|
### 4. DM and Group Message Calls
|
||||||
|
|
||||||
- **File:** `cinny/src/app/components/CallEmbedProvider.tsx`
|
- **File:** `cinny/src/app/components/CallEmbedProvider.tsx`
|
||||||
- **Status:** **PARTIALLY FIXED ⚠️ UNTESTED** — Volume control added. Remaining: ringtone selection, suppression during active calls.
|
- **Status:** **PARTIALLY FIXED ⚠️ UNTESTED** — Volume + ringtone selection added. Remaining: (b) non-intrusive notification when already in another call.
|
||||||
- **Issue:** Incoming call ringtone is hardcoded, lacks volume control, and is suppressed if the user is already in an active call.
|
- **Issue:** Incoming call ringtone is hardcoded, lacks volume control, and is suppressed if the user is already in an active call.
|
||||||
- **Root Cause:** Ringing logic is tightly coupled to `RTCNotification` events in `CallEmbedProvider.tsx`, using a hardcoded audio file path. It lacks an abstraction for sound management or user-configurable settings for ringtones/volumes.
|
- **Root Cause:** Ringing logic is tightly coupled to `RTCNotification` events in `CallEmbedProvider.tsx`, using a hardcoded audio file path. It lacks an abstraction for sound management or user-configurable settings for ringtones/volumes.
|
||||||
- **Fix Applied:** Added `ringtoneVolume` setting (0–100, default 70). `IncomingCall` reads this setting and applies `audioElement.volume = ringtoneVolume / 100` before `play()`. Slider added to Settings → General → Calls section.
|
- **Fix Applied:**
|
||||||
- **Remaining:** (a) Ringtone selection (still hardcoded to `call.ogg`); (b) Suppression during active calls — not investigated.
|
- `ringtoneVolume` setting (0–100, default 70); `IncomingCall` applies it to the ring. Slider in Settings → General → Calls.
|
||||||
|
- **(a) Ringtone selection** (`4a875884`): `ringtoneId` setting (`classic | chime | soft | retro | none`). New `utils/ringtones.ts` synthesizes the three styles in-browser (WebAudio, mirroring `callSounds.ts`) — no new binary assets; `classic` keeps `call.ogg`; `none` is silent/visual-only. `startRingtone()` loops until stopped; `previewRingtone()` powers the on-select preview in Settings. Persisted id is whitelisted in `getSettings`.
|
||||||
|
- **Remaining:** **(b)** When the user is already in a call (`joined`), a second incoming call is currently dropped from the UI entirely (`!joined && callInfo`). Fully un-suppressing would put a disruptive full-screen takeover over the active call — the correct fix is a compact, non-intrusive in-call notification (e.g. a toast with Answer/Reject) rather than the existing `Overlay` dialog. Deferred pending that design.
|
||||||
|
|
||||||
### 5. Seasonal Themes and Chat Backgrounds Design
|
### 5. Seasonal Themes and Chat Backgrounds Design
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user