Skip to content

Add chat features: mentions, pins, bookmarks, search, presence & more#18

Merged
TechHutTV merged 2 commits into
mainfrom
feat/chat-features
Mar 2, 2026
Merged

Add chat features: mentions, pins, bookmarks, search, presence & more#18
TechHutTV merged 2 commits into
mainfrom
feat/chat-features

Conversation

@TechHutTV
Copy link
Copy Markdown
Contributor

@TechHutTV TechHutTV commented Mar 2, 2026

Summary

Adds 10 features to the chat system to bring it closer to a Slack-like experience. Spans backend (service/controller/routes), frontend (components/hooks/api), shared schemas, and a new Prisma migration.

Features

@Mentions

  • @ trigger in message input with member dropdown picker and keyboard navigation
  • Stores @[userId] format internally, renders as highlighted @DisplayName
  • Creates CHAT_MENTION notifications for mentioned users

Chat Notifications

  • New CHAT_MENTION and CHAT_DM_MESSAGE notification types
  • DM messages auto-notify all other channel members
  • Notification preference toggles for both types in settings
  • Real-time delivery via WebSocket notification_created event

Markdown Rendering

  • Messages render markdown (bold, italic, code, links, lists) via react-markdown + remark-gfm
  • Mentions are pre-processed into bold @DisplayName before rendering

File Sharing

  • Paperclip button on message action toolbar opens Drive file picker
  • Reuses existing Attachment model with entityType="message"

Pinned Messages

  • Pin/unpin messages from the action toolbar
  • Pin count badge and panel accessible from channel header
  • Real-time updates via chat_message_pinned/chat_message_unpinned events

Bookmarks / Saved Messages

  • Bookmark button on message action toolbar
  • "Saved Messages" entry in channel sidebar opens bookmarks panel
  • Per-user saved messages with channel context

Thread Subscriptions

  • Auto-subscribe when replying to a thread
  • Bell icon toggle in thread panel header for manual subscribe/unsubscribe
  • Subscribers notified of new replies via WebSocket

Message Search

  • Global (Cmd+K): Chat messages appear alongside tasks and wiki pages in search results
  • In-channel: Search icon in channel header opens a search bar with results dropdown

Presence (Online/Away/Offline)

  • WebSocket-based presence using existing connection tracking (5-min away threshold)
  • Green/yellow dots on DM avatars in sidebar
  • Presence status shown in DM channel headers
  • presence_online/presence_offline broadcast events

Channel Archiving

  • Archive/unarchive from channel settings dialog
  • Archived channels show banner, hide message input, block new messages
  • Collapsed "Archived" section in sidebar
  • Real-time archive/unarchive events

Schema Changes (single migration)

  • ChatChannel: + archivedAt, archivedById
  • ChatMessage: + pinnedAt, pinnedById
  • NotificationType enum: + CHAT_MENTION, CHAT_DM_MESSAGE
  • NotificationPreference: + chatMention, chatDmMessage
  • New table: ChatBookmark (userId + messageId, unique constraint)
  • New table: ChatThreadSubscription (messageId + userId, unique constraint)

Files Changed

  • 32 files across backend, frontend, shared, and prisma
  • +2,339 lines / -86 lines

@TechHutTV TechHutTV changed the title Chat features Add chat features: mentions, pins, bookmarks, search, presence, archiving & more Mar 2, 2026
@TechHutTV TechHutTV changed the title Add chat features: mentions, pins, bookmarks, search, presence, archiving & more Add chat features: mentions, pins, bookmarks, search, presence & more Mar 2, 2026
@TechHutTV TechHutTV merged commit 9daa42d into main Mar 2, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant