Commit Graph

1449 Commits

Author SHA1 Message Date
Abhinav Raut dbf4d3a0a6 Fix inline image media not linking on S3 presigned URLs
Also simplify the inline-image helpers: one <img src> matcher plus stringutil.ExtractUUID, instead of two combined regexes with offset math.
2026-05-14 22:36:11 +05:30
Abhinav Raut 3470347708 Throttle conversation list refresh and keep list on fetch errors 2026-05-14 21:17:17 +05:30
Abhinav Raut d1c346d0f8 Style toasts with theme instead of rich colors 2026-05-14 21:16:36 +05:30
Abhinav Raut 74dd2f9335 Merge pull request #286 from mageaustralia/feat/bulk-actions
Add bulk actions on conversations (assign, status, priority)
2026-05-14 20:14:16 +05:30
Abhinav Raut 4ca99b3396 Centralize conversation tag updates in store 2026-05-14 20:06:56 +05:30
Abhinav Raut 123b809be4 Address review feedback on bulk actions 2026-05-14 20:06:56 +05:30
Matthew Campbell 863ac68fba Add bulk actions on conversations (assign, status, priority)
Per-row checkboxes on the conversation list. When at least one
conversation is selected, the filters bar swaps for a small toolbar with
three dropdowns: Assign (agent or team), Status, Priority. Shift-click
selects a range. The X on the right clears.

Frontend only. The bulk operations call the existing per-conversation
API endpoints (updateAssignee, updateConversationStatus,
updateConversationPriority) in parallel via Promise.allSettled. No new
backend handler.

Each dropdown is gated on the corresponding existing permission
(conversations:update_user_assignee, _team_assignee, _status,
_priority). Toolbar strings are localized via 8 new keys under
conversation.bulkActions.* in i18n/en.json.
2026-05-14 20:06:05 +05:30
Abhinav Raut 8ae98de4fe Merge pull request #289 from mageaustralia/feat/image-attachment-ux
Inline images, lightbox, and attachment UX
2026-05-14 17:12:30 +05:30
Abhinav Raut 475667e9e8 Render audio attachments as tiles with inline popover player 2026-05-14 17:07:11 +05:30
Abhinav Raut 534771e94e Save inline image cid refs instead of urls in DB to survive url expiry 2026-05-14 17:07:11 +05:30
Abhinav Raut 14b8ceba4b Remove obvious comments 2026-05-14 17:06:35 +05:30
Abhinav Raut 9c2483a7c0 Harden attachment paths: drop PDF iframe, noopener/noreferrer everywhere, rename components so they don't confuse me anymore. 2026-05-14 17:06:35 +05:30
Abhinav Raut 0be4a48b9c Generate thumbnails for extensionless images with magic byte detection 2026-05-14 17:06:35 +05:30
Abhinav Raut b72dad7cc7 Swap lightbox to lib, force-download via query param, link inline media on insert 2026-05-14 17:06:35 +05:30
Abhinav Raut 878506b5c6 Sync i18n with English fallback, trim MessageBubble comments 2026-05-14 17:06:35 +05:30
Abhinav Raut 4ab1885e5e Harden inline image embed 2026-05-14 17:06:35 +05:30
Abhinav Raut 98e04e753b Tighten image attachment UX: composable, lightbox a11y, send gates, tests 2026-05-14 17:06:35 +05:30
Abhinav Raut ae521e0713 Translate image toolbar labels, fix Best fit and Small 2026-05-14 17:06:35 +05:30
Abhinav Raut 35bdf02002 Drop replaceCIDInContent, keep PR scoped to image resize UX 2026-05-14 17:06:35 +05:30
Abhinav Raut acda125ad6 Refactor inline images PR for project conventions 2026-05-14 17:06:35 +05:30
Matthew Campbell b96a9c599a Inline images, lightbox, and attachment UX
Paste/drop to upload images in the editor with drag-resize handles and a
size toolbar. Image attachments open in a lightbox with zoom/pan and
keyboard navigation. File attachments get type-specific icons and a PDF
preview pane.

Outgoing email inlines images as multipart/related CID parts so
recipients see them even if our /uploads/ URLs later expire or the
server is unreachable. Orphan uploads (pasted into the reply before the
message is persisted) are embedded too; cross-conversation references
are still rejected.

Also tightens replaceCIDInContent HTML safety and scopes the uploads
URL regex to <img src> attributes only.
2026-05-14 17:06:35 +05:30
Abhinav Raut f4074511c3 Merge pull request #309 from abhinavxd/dependabot/npm_and_yarn/frontend/postcss-8.5.10
build(deps-dev): bump postcss from 8.4.49 to 8.5.10 in /frontend
2026-05-13 11:07:10 +05:30
dependabot[bot] 13c690ee08 build(deps-dev): bump postcss from 8.4.49 to 8.5.10 in /frontend
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.49 to 8.5.10.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.49...8.5.10)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.10
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-12 21:40:25 +00:00
Abhinav Raut 338eaa0f06 Merge pull request #308 from abhinavxd/dependabot/npm_and_yarn/frontend/axios-1.15.2
build(deps): bump axios from 1.15.0 to 1.15.2 in /frontend
2026-05-12 23:44:48 +05:30
Abhinav Raut 74189f84fb reduce websocket message channel buffer size from 10000 to 256 2026-05-12 15:48:10 +05:30
Abhinav Raut ab05d6abad fix ws client leak when conn dies between ping writes 2026-05-12 11:43:57 +05:30
Abhinav Raut ac5941c6e7 Update ROADMAP.md 2026-05-11 18:37:38 +05:30
dependabot[bot] f1b81f4b70 build(deps): bump axios from 1.15.0 to 1.15.2 in /frontend
Bumps [axios](https://github.com/axios/axios) from 1.15.0 to 1.15.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.15.0...v1.15.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.15.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 07:14:40 +00:00
Abhinav Raut d821cca8f4 Update ROADMAP.md 2026-04-25 16:07:41 +05:30
Abhinav Raut e7362a93c7 Update ROADMAP.md 2026-04-25 15:07:34 +05:30
Abhinav Raut feb23fae8a fix new inbox create dropping enabled/csat_enabled/secret/linked_email_inbox_id v2.2.1 2026-04-25 13:24:43 +05:30
Abhinav Raut bf69b56efb fix prompt_tags_on_reply not persisting on email inbox creation 2026-04-25 13:08:10 +05:30
Abhinav Raut be7369d64f Update widget unread count style v2.2.0 2026-04-25 12:36:59 +05:30
Abhinav Raut ea4f8d75d3 cap unread message count badge at 9+ since backend caps at 10 2026-04-25 12:30:08 +05:30
Abhinav Raut c3d1dbe5f2 Merge pull request #300 from abhinavxd/reply-to-addr
Add support for reply to address on inboxes.
2026-04-24 23:05:34 +05:30
Abhinav Raut b06a5151cc disable plus addressing toggle for microsoft inboxes instead of hiding, preventing accidental disable on re-save 2026-04-24 22:03:39 +05:30
Abhinav Raut 971ec49c35 enable datatable search on all admin tables, restrict global filter to text columns 2026-04-24 21:41:21 +05:30
Abhinav Raut ffa5a22f3f fix s3 avatar_url storing bucket path instead of /uploads/<uuid>
Trim spaces around reply to config
2026-04-24 20:12:04 +05:30
Abhinav Raut dce33238e2 exclude inbox reply_to from reply recipients to prevent self-loop 2026-04-24 19:14:55 +05:30
Abhinav Raut 3d2da2a11f add reply_to on email inboxes for routing replies off the SMTP From domain 2026-04-24 18:39:16 +05:30
Abhinav Raut 38c14808be fix view greater/less than date filter including boundary-day rows 2026-04-23 15:28:34 +05:30
Abhinav Raut 8579570890 fix inbox form binding wait_timeout to wrong key, never persisting SMTP pool wait timeout 2026-04-23 14:53:20 +05:30
Abhinav Raut 467a62b091 fix snoozed_until leak causing resolved/closed conversations to reopen 2026-04-23 11:36:03 +05:30
Abhinav Raut bfe7cef627 add global search to datatable with per-table opt-out 2026-04-23 03:12:52 +05:30
Abhinav Raut dd6c8f93a0 add conversation.subject_ref_format config for customizing outgoing email subject marker 2026-04-23 03:11:36 +05:30
Abhinav Raut 8ebd7d7e2b cap macro command palette list at 200 and scope highlight observer 2026-04-22 15:54:05 +05:30
Abhinav Raut 3ba8ab0a8d prevent idle detection from overwriting away_manual/away_and_reassigning 2026-04-21 22:40:10 +05:30
Abhinav Raut 627c4a7c46 Merge pull request #293 from abhinavxd/category-statuses
Feat: Category statuses
2026-04-21 21:52:33 +05:30
Abhinav Raut ed4bac6139 return error on default status update instead of silent no-op 2026-04-21 21:48:13 +05:30
Abhinav Raut 1012949539 Merge remote-tracking branch 'origin/main' into category-statuses 2026-04-21 21:28:07 +05:30