What's new
- Nested filter groups in views - build nested AND/OR groups and filter on more fields.
- Conversation transcript download - download entire conversation transcript.
- Customisable From display name - set a template for the From name on outgoing emails.
- Send and set status - split button in the reply box to send and change status in one action.
- Self-assign nudge - prompts an agent to self-assign after replying to an unassigned conversation.
- Day separators - the message list now groups messages by day.
- Macro hotkey - press Ctrl+M to open the macro dialog directly.
- CSAT in the sidebar - CSAT rating is now directly visible in the sidebar
What's fixed
- Fixes a race where autoassigner would sometimes override the manual assignments of a conversation.
Upgrade notes
- Always take a database backup before upgrading.
- Follow the steps here.
Changelog
- addd44f Merge pull request #369 from abhinavxd/improved-views
- a629bea resolve sql builder date filters in the app timezone instead of UTC
- a110d38 adjusts padding in filter group builder adds comments with sample payloads to make the filter format easier to understand
- 4eb1f8e Add 2FA for password login to roadmap
- 85a2002 keeps filter builder Add group button visible and tidies group controls
- 54e30e2 feat: disable 'Add group' in filter builder at the backend group cap
- 20b3aec fix: restrict contains operator to trigram-indexed fields in view filters
- 95f829b fix: stop filter builder from mutating form state; emit immutable tree updates
- ed0d359 feat: cap total filter conditions and 'in' values in query builder
- b296b57 feat: cap filter groups and surface a specific error when exceeded
- 6a24612 fix: drop icon from 'Remove group' button so it doesn't draw focus
- 496264d fix: separate group-remove from per-condition remove in filter builder
- 9b31e28 fix: reject empty filter values in query builder; tighten filter tree handling
- 3247a3a feat: support nested AND/OR filter groups and new fields in views
- 36c962a Merge pull request #385 from abhinavxd/fix-autoassigner-assignment-race
- 15e5c35 renames conversation assignment funcs for clearer intent
- 18ae7b9 make updateAssignee private so user assignment can't skip hooks
- 1b87433 fixes autoassigner overriding a manual assignment
- ef1ef15 Update roadmap with new features and remove WIP items
- 14a812d Merge pull request #371 from abhinavxd/update-font
- d300ce2 feat: show day separators in conversation message list
- ae328d3 Update ROADMAP.md
- edbc026 Merge pull request #359 from abhinavxd/transcript
- f70e488 refactor: sanitize only the reference number for transcript filename
- 2d81703 fix: address review nits on transcript download
- b75f138 Merge pull request #375 from abhinavxd/feat/self-assign-nudge-on-reply
- 1ce638e refactor: extract AssignSelfNudge component, let store own local assignee state
- b7564b5 Merge pull request #374 from abhinavxd/feat/from-name-template
- f9e0446 feat: nudge agent to self-assign after replying to an unassigned conversation
- f987224 perf: avoid DB lookups when building email From name
- 1fccfce feat: add customisable From display name template for outgoing emails
- cfed3cf test: add e2e tests for inbox, team, agent and conversation flows
- 2836ad2 Merge pull request #373 from aditya2r/feat/unified-send-and-close-ticket-action
- ed95b91 refactor tidy reply box send button imports and dead code
- 90ceece fix apply status update after send confirmation dialogs.
- bf22811 fix chevron color
- b679fc2 feat: add "Send and set status" split button to reply box.
- 49b4297 update remaining static templates to Instrument Sans
- 073d6a5 Merge pull request #365 from vanboom/363-macro-hotkey
- 4f4bbbe Fix macro context lost via Ctrl+K and stale macro filter after new conversation
- cb081b4 update font family to Instrument Sans
- 168add0 Address issue #363, implement CTRL+M hotkey to access the macro dialog directly
- 5e9d964 Merge pull request #361 from abhinavxd/revert-349-codex/document-widget-api
- da1cf5d Revert "docs: document widget API endpoints"
- eb6a195 feat: add conversation transcript download and CSAT in sidebar
- 84c0c97 Merge pull request #349 from alan747271363-art/codex/document-widget-api
- 9e247c5 Merge pull request #356 from abhinavxd/dependabot/npm_and_yarn/frontend/vitest-4.1.0
- c841335 Update ROADMAP.md
- 3f06543 build(deps-dev): bump vitest from 3.2.2 to 4.1.0 in /frontend
- 2c766a4 docs: document widget API endpoints
What's Changed
- build(deps-dev): bump vitest from 3.2.2 to 4.1.0 in /frontend by @dependabot[bot] in #356
- docs: document widget API endpoints by @alan747271363-art in #349
- Revert "docs: document widget API endpoints" by @abhinavxd in #361
- Resolves #363, implement CTRL+M hotkey to access the macro dialog by @vanboom in #365
- feat: add "Send and set status" split button to reply box. by @aditya2r in #373
- feat: add customisable From display name template for outgoing emails by @abhinavxd in #374
- feat: nudge agent to self-assign after replying to an unassigned conversation by @abhinavxd in #375
- feat: add conversation transcript download and CSAT in sidebar by @abhinavxd in #359
- update font family to Instrument Sans by @abhinavxd in #371
- fixes autoassigner overriding a manual assignment by @abhinavxd in #385
- feat: support nested AND/OR filter groups and new fields in views by @abhinavxd in #369
New Contributors
- @alan747271363-art made their first contribution in #349
- @vanboom made their first contribution in #365
- @aditya2r made their first contribution in #373
Full Changelog: v2.3.1...v2.4.0