Show channel-message transport scope tags consistently for retained history and live updates, using the server contract from the next scope-metadata slice. Reuse existing scope chips/selectors; add a scope filter within the selected channel, explicit unknown/unavailable labels, and English/French text for the touched message panel.
Scope filtering must apply equally to history, pagination and live delivery without cross-filter cache contamination. Preserve message-to-packet investigation and duplicate handling. Explain that the label belongs to the first stored packet, not all later reception paths; missing fields from older servers remain unavailable rather than guessed. Test known/unknown/unscoped/legacy data, desktop/phone, both languages and keys/history unavailable states. No channel keys are changed by this feature. Related translation work: #12 (partial).
Show channel-message transport scope tags consistently for retained history and live updates, using the server contract from the next scope-metadata slice. Reuse existing scope chips/selectors; add a scope filter within the selected channel, explicit unknown/unavailable labels, and English/French text for the touched message panel.
Scope filtering must apply equally to history, pagination and live delivery without cross-filter cache contamination. Preserve message-to-packet investigation and duplicate handling. Explain that the label belongs to the first stored packet, not all later reception paths; missing fields from older servers remain unavailable rather than guessed. Test known/unknown/unscoped/legacy data, desktop/phone, both languages and keys/history unavailable states. No channel keys are changed by this feature. Related translation work: #12 (partial).