element-hq / element-hq/element-meta

Encrypted-room search on Element Web (browser EventIndex, not Desktop/Seshat)

Open
#3,294 0 comments 0 reactions 0 assignees View on GitHub
T-Enhancement
Dominant language
No language data
Stars
112
Forks
25
Avg merge
6h 6m
Merged PRs (30d)
4

Description

### Your use case

#### What would you like to do?

Search messages in **end-to-end encrypted rooms from Element Web in the browser**, using the same Search UI Desktop already has, without installing Element Desktop.

#### Why would you like to do it?

Every room on our deployment is E2EE. Hosted Element Web is the product client (SIWX/OIDC, no Desktop). Today Search says the feature is only available on desktop apps. That is upstream policy (`WebPlatform.getEventIndexingManager()` is null), not a config bug.

Real use: a colleague remembers a phrase from last week, hits Search, and needs to land on that encrypted message. Sending people to Desktop splits login, recovery, and support.

#### How would you like to achieve it?

Implement Element's existing `BaseEventIndexManager` / `EventIndexPeg` hook in the browser:

- Client-side index only (no server-side search, no plaintext to the homeserver)
- AES-GCM at rest in IndexedDB; wrapping key from the session pickle key (dies on logout)
- Not a Seshat WASM port (native I/O cannot run in the page)
- Labs first (`feature_web_event_index`, default off)

We have this running in production on a self-hosted Element Web and want to contribute it.

**I plan to contribute the implementation** (PR against `element-web` develop, labs-gated).

---

## Have you considered any alternatives?

- Seshat WASM: rejected. Seshat is SQLCipher + Tantivy 0.12 + native threads + Neon.
- Desktop-only: rejected for hosted-web deployments.
- Server-side / searchable-encryption MSC: out of E2EE scope.

---

## Additional context

- Branch: https://github.com/inblockio/element-web/tree/feat/web-event-index
- Open PR from: https://github.com/element-hq/element-web/compare/develop...inblockio:element-web:feat/web-event-index?expand=1
- CLA: https://cla-assistant.io/element-hq/element-web
- Chat: https://matrix.to/#/#element-dev:matrix.org

### Have you considered any alternatives?

_No response_

### Additional context

_No response_

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with WebPlatform.getEventIndexingManager(), BaseEventIndexManager, and EventIndexPeg, then review the proposed feat/web-event-index branch and linked pull request. Done means browser search works for encrypted-room messages behind feature_web_event_index, with client-side IndexedDB storage and the stated session-key lifecycle.

Written by the indexing model from the issue text.

Assessment

Domain
frontend, search, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.