Skip to content

Live chat with widget#114

Open
abhinavxd wants to merge 156 commits intomainfrom
feat/live-chat-channel
Open

Live chat with widget#114
abhinavxd wants to merge 156 commits intomainfrom
feat/live-chat-channel

Conversation

@abhinavxd
Copy link
Copy Markdown
Owner

@abhinavxd abhinavxd commented Jun 28, 2025

  • New vue app for serving live chat widget, created sub-directories inside frontend dir main and widget
  • Vite changes for both main app and widget app.
  • New backend live chat channel
  • APIs for live chat widget
  • Clean up of i18n strings

Closes - #110

- new vue app for serving live chat widget, created subdirectories inside frontend dir `main` and `widget`
- vite changes for both main app and widget app.
- new backend live chat channel
- apis for live chat widget
@abhinavxd abhinavxd self-assigned this Jun 28, 2025
abhinavxd added 28 commits July 6, 2025 18:46
move last message details in the `meta` JSONB column of conversations
feat: Add HTTP utility functions for trusted origin checks

feat: Implement typing status broadcasting for live chat clients and agents.

feat: Add support for signed URLs in media manager

fix: Update database migration to handle duplicate visitors with same email address.

feat: Add conversation subscription and typing message models for WebSocket communication

feat: Implement conversation subscription management in WebSocket hub this is used for broadcasting typing indicator.

feat: Revamp widget JavaScript to improve mobile responsiveness and show unread messages if any.
…dget iframe.

feat: more methods to toggle wiget visibility
Update user and inbox models, queries, and migrations
…er header instead of origin.

- Removed the widgetOrigin middleware as it would have same origin as the iFrame URL, changed this to use `Referrer` header on initial iFrame load.
- Feat(agent-view): Added external_user_id display in the conversation sidebar.
…TTP headers

  - Add widgetAuth middleware to handle JWT and inbox validation consistently
  - Move authentication logic from request body to standard HTTP headers:
    * JWT: Authorization: Bearer <token>
    * Inbox ID: X-Libredesk-Inbox-ID: <id>
  - Refactor all widget handlers to use middleware context instead of duplicate auth code
  - Frontend now sends auth headers via HTTP interceptor for all widget requests
…starting chat.

fix: Chat initialization failing due to the JWT authenticated user doesn't exist in the DB yet.

fix: Always upsert custom attribues instead of replacing.
- update file imports to use shared-ui utils and remove redundant file.js
- Implement SignedURLStore interface for fs store
…-chat form.

- Deleted the VisitorInfoForm.vue component and its associated schema.
- Introduced a new preChatFormSchema.js to handle dynamic form validation.
- Updated ChatView.vue to conditionally display the PreChatForm based on user session and conversation state.
- Enhanced chat store to manage current conversation updates.
- Implemented WebSocket event handling for conversation updates.
- Updated localization files to include new terms related to the pre-chat form.
- Modified conversation management logic to support broadcasting updates to widget clients.
- Updated SQL queries to accommodate custom attributes for visitors.
update shadows for iframe and widget
…ist, simplify chat conversation SQL queries.

- add indexes to make conversation unread message count faster
@abhinavxd abhinavxd changed the title WIP: Live chat with widget Live chat with widget Mar 29, 2026
@abhinavxd
Copy link
Copy Markdown
Owner Author

There's a release candidate ready to check it out - #273

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.

4 participants