feat: Tier 0 Slack-parity features#4
Merged
Conversation
…on triggers, link previews Phase 1 of Tier 0 Slack parity: backend schema + types. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
…ase 2) Inline edit (Esc/Cmd+Enter), soft-delete, (edited) indicator. Extract realtime subscription into useChannelRealtime; split MessageRow into MessageActions/MessageEditor to satisfy lint limits. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Add frimousse emoji picker (ReactionPicker) with localStorage recents, unicode emoji storage, and unicode quick reactions. Covered by unit tests. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Render message bodies as sanitized GitHub-flavored markdown via react-markdown + remark-gfm + rehype-sanitize (MessageBody). Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Sidebar unread badges via channel_unread_counts RPC, new-messages divider, mark-read on open + focus refresh. Extract WorkspaceSidebar + useUnread; pure unread helpers with full test coverage. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Header bell panel listing thread/dm/reaction/mention notifications, live updates via the user:<uid> private realtime topic, mark-all-read, and click-through to channel. Pure notification helpers fully tested. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
…ase 7) Presence (active/away/dnd) + custom status (emoji/text/expiry) editor in sidebar, presence dots and status emoji on members, transient activity toast suppressed in do-not-disturb. Pure status helpers fully tested. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
POST /api/unfurl validates URLs (protocol + private-host + DNS resolution + redirect re-validation), parses OpenGraph, and caches in link_previews. LinkPreviewCard renders the first link's preview. Pure helpers fully tested. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
…hase 9) Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements all six Tier 0 Slack-parity features (backend + frontend), shipped in 8 phased commits plus docs.
Features
(edited)indicator.react-markdown+remark-gfm+rehype-sanitize).channel_unread_countsRPC), new-messages divider, mark-on-read + focus refresh.user:<id>private realtime topic, mark-all-read, click-through./api/unfurl(protocol + private-host + DNS + redirect re-validation),link_previewscache, preview cards.Backend
supabase/migrations/003_tier0_parity.sql: presence/status columns,channel_unread_counts()RPC, mention/thread/dm/reaction notification triggers, broadcast touser:<id>topic with RLS gating,link_previewstable.src/types/database.tsandsrc/types/chat.ts.Architecture
The chat orchestrator was decomposed to stay under
max-lines:WorkspaceSidebar, theuseChannelRealtime/useUnread/useNotificationshooks, and pure helpers (unread.ts,notifications.ts,status.ts,emoji-recents.ts,unfurl.ts) - all unit-tested at 100% coverage.Verification