feat: encrypted room search via local cache scan

No Matrix web client supports E2EE message search server-side — the
homeserver only sees ciphertext. This is the same approach FluffyChat
takes: scan locally decrypted events already in the live timeline.

Changes:
- useLocalMessageSearch: searches getLiveTimeline().getEvents() in
  encrypted rooms using decrypted content (getContent(), not event.content)
- MessageSearch: runs client-side search in parallel with server search,
  shows results in a dedicated 'Encrypted Rooms' section with clear notice
  about scope (only cached/recently viewed messages)
- Encryption notice shown when encrypted rooms are in scope — explains
  why results may be missing and what to do
- Server result limit raised from 20 → 50

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-28 20:01:21 -04:00
parent 3485a4c118
commit dd2123da4b
3 changed files with 204 additions and 11 deletions
@@ -80,7 +80,7 @@ export const useMessageSearch = (params: MessageSearchParams) => {
highlights: [],
groups: [],
};
const limit = 20;
const limit = 50;
const requestBody: ISearchRequestBody = {
search_categories: {