Repository navigation
Webview: Slack full end-to-end parity with the native app #1016
Description
Summary
Ensure the Slack webview (https://app.slack.com/client/) works identically to the native Slack desktop app: login, messaging, channels, threads, reactions, Huddles (voice/video), file sharing, native OS notifications, and continuous memory ingestion.
Problem
While Slack is a CDP-migrated provider (Network MITM + IDB + DOM snapshot scanner), there are gaps versus the native app experience: Huddle popup whitelisting needs verification under all edge cases, and end-to-end coverage of all Slack features has not been formally validated.
Solution
Validate and fix every Slack feature path. The scanner (slack_scanner/) uses CDP exclusively (zero JS injection). IDB scan interval is 30s. Messages are grouped by (channel_id, day) and upserted via openhuman.memory_doc_ingest.
Acceptance criteria
- Auth — Google SSO, email/password, SAML SSO all complete without manual intervention; session persists across app restarts
- Messaging — Send and receive messages in channels, DMs, and group DMs; threads render and are navigable
- Reactions & emoji — Emoji picker opens, reactions post correctly
- File sharing — Upload and download files; image previews render inline
- Huddles — Huddle popup spawns correctly (
about:blank→ huddle URL whitelisted); audio/video functional; Huddle end cleans up popup - Notifications — Native OS notifications fire for new messages; respect per-channel mute settings; DND honored;
notification_settingstoggle works - Memory ingestion — IDB scanner extracts messages, users, channels, workspace name;
memory_doc_ingestposts land in core; messages grouped by (channel_id, day) - DOM snapshot —
dom_snapshot.rsfast-tick captures unread badges and channel list accurately - Multi-workspace — Switching workspaces within the same webview works; scanner tracks correct team_id
- Session persistence — Tab switch away and back preserves warm session; no re-auth required
- Search — Slack's built-in search functional within the webview
- Navigation — External links open in system browser; internal links stay in webview; allowed hosts (
slack.com,slack-edge.com,slack-imgs.com,slack-files.com) all resolve
Known issues / limitations
- Huddle popup handling uses
about:blankwhitelisting which may break if Slack changes their popup flow - Scanner can be force-disabled via
OPENHUMAN_DISABLE_SLACK_SCANNER=1env var (dev escape hatch) - IDB scan interval is 30s — messages within that window may be delayed vs native push
Related
- Scanner:
app/src-tauri/src/slack_scanner/(mod.rs, idb.rs, extract.rs, dom_snapshot.rs) - Huddle popup logic:
app/src-tauri/src/webview_accounts/mod.rs - Manifest:
app/src-tauri/recipes/slack/manifest.json
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
Activity
fix(cdp): parse origin_of via tauri::Url instead of byte counting (ti…
fix(slack-scanner): pin to strict-fragment target id to prevent cross…
docs(qa): tighten auth-row wording and correct row 7 grouping claim (t…
fix(webview/slack): scanner spawn + notifications + post-pushState ta…
graycyrus commentedon Apr 30, 2026
@oxoxDev will close after testing is done
feat(webview/slack): grant audio/video/screenshare perms for huddles (t…
2 remaining items
[-][Feature] Webview: Slack full end-to-end parity with the native app[/-][+]Webview: Slack full end-to-end parity with the native app[/+]oxoxDev commentedon May 5, 2026
The huddle issue resolved in #1079.
fix(webview/slack): scanner spawn + notifications + post-pushState ta…
fix(webview/slack): scanner spawn + notifications + post-pushState ta…