v2.4.0

abhinavxd/libredeskv2.4.0Jun 18, 2026by github-actions[bot]

AI Summary

Enhances views with nested filter groups, adds transcript download, customizable From names, and self-assign nudges.

Key Highlights

  • Nested filter groups in views
  • Conversation transcript download
  • Customizable From display name
  • Self-assign nudge after replying
  • Day separators in message list

New Features

  • Nested filters
  • Transcript download
  • Custom From name
  • Send & set status
  • Self-assign nudge
  • Day separators
  • Macro hotkey
  • CSAT in sidebar

Full Release Notes

## 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](https://docs.libredesk.io/getting-started/upgrade).


## Changelog
* addd44fa Merge pull request #369 from abhinavxd/improved-views
* a629beaf resolve sql builder date filters in the app timezone instead of UTC
* a110d38d adjusts padding in filter group builder adds comments with sample payloads to make the filter format easier to understand
* 4eb1f8ec Add 2FA for password login to roadmap
* 85a20024 keeps filter builder Add group button visible and tidies group controls
* 54e30e2e feat: disable 'Add group' in filter builder at the backend group cap
* 20b3aec4 fix: restrict contains operator to trigram-indexed fields in view filters
* 95f829b3 fix: stop filter builder from mutating form state; emit immutable tree updates
* ed0d359c feat: cap total filter conditions and 'in' values in query builder
* b296b572 feat: cap filter groups and surface a specific error when exceeded
* 6a246124 fix: drop icon from 'Remove group' button so it doesn't draw focus
* 496264d5 fix: separate group-remove from per-condition remove in filter builder
* 9b31e282 fix: reject empty filter values in query builder; tighten filter tree handling
* 3247a3aa feat: support nested AND/OR filter groups and new fields in views
* 36c962af Merge pull request #385 from abhinavxd/fix-autoassigner-assignment-race
* 15e5c35d renames conversation assignment funcs for clearer intent
* 18ae7b95 make updateAssignee private so user assignment can't skip hooks
* 1b87433d fixes autoassigner overriding a manual assignment
* ef1ef15a Update roadmap with new features and remove WIP items
* 14a812d0 Merge pull request #371 from abhinavxd/update-font
* d300ce26 feat: show day separators in conversation message list
* ae328d3c Update ROADMAP.md
* edbc026a Merge pull request #359 from abhinavxd/transcript
* f70e4886 refactor: sanitize only the reference number for transcript filename
* 2d81703a fix: address review nits on transcript download
* b75f138d Merge pull request #375 from abhinavxd/feat/self-assign-nudge-on-reply
* 1ce638e9 refactor: extract AssignSelfNudge component, let store own local assignee state
* b7564b5d Merge pull request #374 from abhinavxd/feat/from-name-template
* f9e04467 feat: nudge agent to self-assign after replying to an unassigned conversation
* f987224c perf: avoid DB lookups when building email From name
* 1fccfceb feat: add customisable From display name template for outgoing emails
* cfed3cfc test: add e2e tests for inbox, team, agent and conversation flows
* 2836ad2f Merge pull request #373 from aditya2r/feat/unified-send-and-close-ticket-action
* ed95b910 refactor tidy reply box send button imports and dead code
* 90ceece0 fix apply status update after send confirmation dialogs.
* bf228113 fix chevron color
* b679fc21 feat: add "Send and set status" split button to reply box.
* 49b42976 update remaining static templates to Instrument Sans
* 073d6a51 Merge pull request #365 from vanboom/363-macro-hotkey
* 4f4bbbef Fix macro context lost via Ctrl+K and stale macro filter after new conversation
* cb081b4b update font family to Instrument Sans
* 168add04 Address issue #363, implement CTRL+M hotkey to access the macro dialog directly
* 5e9d964a Merge pull request #361 from abhinavxd/revert-349-codex/document-widget-api
* da1cf5db Revert "docs: document widget API endpoints"
* eb6a195a feat: add conversation transcript download and CSAT in sidebar
* 84c0c97f Merge pull request #349 from alan747271363-art/codex/document-widget-api
* 9e247c57 Merge pull request #356 from abhinavxd/dependabot/npm_and_yarn/frontend/vitest-4.1.0
* c8413356 Update ROADMAP.md
* 3f065439 build(deps-dev): bump vitest from 3.2.2 to 4.1.0 in /frontend
* 2c766a4c 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 https://github.com/abhinavxd/libredesk/pull/356
* docs: document widget API endpoints by @alan747271363-art in https://github.com/abhinavxd/libredesk/pull/349
* Revert "docs: document widget API endpoints" by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/361
* Resolves #363, implement CTRL+M hotkey to access the macro dialog by @vanboom in https://github.com/abhinavxd/libredesk/pull/365
* feat: add "Send and set status" split button to reply box. by @aditya2r in https://github.com/abhinavxd/libredesk/pull/373
* feat: add customisable From display name template for outgoing emails by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/374
* feat: nudge agent to self-assign after replying to an unassigned conversation by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/375
* feat: add conversation transcript download and CSAT in sidebar by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/359
* update font family to Instrument Sans by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/371
* fixes autoassigner overriding a manual assignment by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/385
* feat: support nested AND/OR filter groups and new fields in views by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/369

## New Contributors
* @alan747271363-art made their first contribution in https://github.com/abhinavxd/libredesk/pull/349
* @vanboom made their first contribution in https://github.com/abhinavxd/libredesk/pull/365
* @aditya2r made their first contribution in https://github.com/abhinavxd/libredesk/pull/373

**Full Changelog**: https://github.com/abhinavxd/libredesk/compare/v2.3.1...v2.4.0