fix: speaker assignment not saving when selected from dropdown#4863
fix: speaker assignment not saving when selected from dropdown#4863devin-ai-integration[bot] wants to merge 2 commits intomainfrom
Conversation
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
✅ Deploy Preview for hyprnote canceled.
|
✅ Deploy Preview for char-cli-web canceled.
|
| } | ||
|
|
||
| let channel = segment.key.channel; | ||
| if !state.complete_channels.contains(&channel) { | ||
| return; | ||
| } | ||
|
|
||
| if let Some(human_id) = state.human_id_by_channel.get(&channel) { | ||
| segment.key = SegmentKey { |
There was a problem hiding this comment.
🚩 Intentional asymmetry: complete_channels guard kept in remember_identity but removed elsewhere
The complete_channels guard was removed from apply_identity_rules (line 119) and assign_complete_channel_human_id (line 93), but intentionally kept in remember_identity at line 155. This creates an asymmetry: reading channel identity (applying assignments to words/segments) no longer requires complete_channels, but writing channel identity at runtime (updating human_id_by_channel based on resolved word identities) still does. This prevents runtime words on non-complete channels from dynamically overwriting carefully set channel assignments. The asymmetry appears intentional but is worth documenting, as the function name assign_complete_channel_human_id no longer accurately describes its behavior — it now assigns channel human_id regardless of completeness.
(Refers to lines 88-101)
Was this helpful? React with 👍 or 👎 to provide feedback.
Two issues in the Rust transcript rendering pipeline: 1. Auto-generated channel assignments (from participant list) were appended AFTER user assignments, causing HashMap::insert to overwrite user choices with auto-generated ones. Fix: reverse ordering so user assignments are processed last and take priority. 2. Channel-scoped assignments were gated by complete_channels, which only includes RemoteParty for exactly 2-participant meetings. For 3+ participant meetings without speaker diarization, user assignments on RemoteParty were silently ignored. Fix: remove the complete_channels gate from apply_identity_rules and assign_complete_channel_human_id so channel-wide assignments are always applied. Closes #4860 Co-Authored-By: John <john@hyprnote.com>
6bb60a4 to
b7441b6
Compare
…uman_id Co-Authored-By: John <john@hyprnote.com>
Summary
Fixes #4860. Two bugs in the Rust transcript rendering pipeline prevented user-selected speaker assignments from taking effect:
Assignment ordering: Auto-generated channel assignments (derived from the participant list) were appended after user assignments. Since
HashMap::insertoverwrites, the auto values silently replaced user choices. Fix: auto assignments are now inserted first so user assignments win.complete_channelsgate:apply_identity_rulesandassign_channel_human_id(formerlyassign_complete_channel_human_id) both required the channel to be incomplete_channelsbefore applying a channel-wide assignment.RemotePartyis only marked complete for exactly-2-participant meetings, so any manual speaker assignment on RemoteParty in 3+ participant meetings was silently dropped. Fix: remove thecomplete_channelsgate from both functions, and rename the function to reflect its new behavior.Review & Testing Checklist for Human
remember_identityasymmetry is safe:remember_identity(speakers.rs ~L155) still gates carry-forward propagation oncomplete_channels. This is intentionally left to prevent runtime words on non-complete channels from dynamically overwriting channel assignments — but confirm this doesn't cause assignments to "forget" on later segments that rely on carry-forward rather than direct lookup.complete_channelsgate was the root cause for multi-participant meetings, specifically test a meeting with 3+ participants to confirm speaker assignment sticks.Notes
assign_complete_channel_human_idwas renamed toassign_channel_human_idto accurately reflect that it no longer checks channel completeness.Link to Devin session: https://app.devin.ai/sessions/9d98abf7a843457cafc59d03a88e83e9
Requested by: @ComputelessComputer