What's New
- Encryption: All database secrets (IMAP/SMTP passwords, webhook secrets, etc.) are now encrypted
- Translations: Added Danish, German, Persian, French, Italian, and Japanese
- OAuth for inboxes: Microsoft and Google email accounts are now supported via OAuth
- Shared views: Create views shared with all agents or specific teams, with new admin pages to manage them
- Draft auto-save: Drafts now auto-save while composing replies, including attachments and macro actions
- New permission:
conversations:read_team_allallows agents to see all conversations assigned to their team, even if unassigned - Resizable conversation panels: Conversation view panels are now resizable
- Sortable table headers: Data tables now support column sorting
- Email threading improvements: Improved matching of incoming emails using subject references and plus-addressing (e.g.
inbox+conv-uuid@domain.com) - UI tweaks: Improvements to dark/light mode colors and layout
- New activity logs: Libredesk now logs permission changes for agents in the activity log, along with password updates from admin panel.
What's Fixed
- Agent permissions not updating when roles were modified or deleted and required an app restart.
⚠️ Important: Upgrade notes
This version adds encryption to Libredesk. You must add an encryption key under app in your config.toml.
Example:
[app]
# Generate using `openssl rand -hex 16`. Must be 32 characters long.
encryption_key = "your-32-char-random-string-here!"- Always take a database backup before upgrading.
- Follow the steps here.
Changelog
- 914bcc1 simplify stale draft deletion sql
- 1a5756a adjust font sizes for metrics in OverviewCard and OverviewView
- 7bbd1bf update dialog title and view for reconnect flow
- 539a31a update capitalizations for en translations
- a6ec2b7 fix inbox form submissions
- 98ac195 check for empty array values in view form
- 8ed5c71 feat: enable sortable headers in data table
- 957f945 update sort order for shared view list.
- 79f1a23 sort user views by name
- 09cd9a6 remove sidebar rails entirely hide secondary side fully once collapsed
- a47fa01 style: reduce icon sizes and adjust padding in SLA badge
- 9c17f98 show subject instead of contacts name in previous conversation list allow previous conversation timestamps to wrap
- 340b47d update help text for inbox
- ddddf04 feat: Shared views for agents and specific teams and admin pages to manage shared views. - Log activity for password set and role permission changes. - Fix agent permissions not changing when a role is modified / deleted.
- 064a73b feat: add
conversations:read_team_allpermission to allow agents to see conversations assigned to their team, regardless of whether an agent is assigned or not. - 608b90e style: color changes for dark and lite mode - add rounded borders around component boundaries
- 29d93d7 Update color variables for dark mode reduce text editor place holder text size
- 44344b4 keep scrollbars consistent across browsers remove version from package.json
- e669224 Merge pull request #204 from abhinavxd/patch-2
- 15de0a3 Merge pull request #185 from abhinavxd/oauth-inbox-and-encryption
- c62294a feat: Make convo panels resizable - add new report/overview metrics
- 2468b91 translate oauth changes in email inbox form - log warnings when sample encryption key is used for libredesk and when encrytion key is not 32 chars
- 7847364 set automation queue size to 10k
- f165f0e remove appending ref number to agent reply mail subjects
- 7ac483d handle converastion not found errors while fetching conversations fetched using uuids from the
toplus address - 27d929c refactor add util funcs to extract conversation uuid from
toaddress - 5fd6bbd remove unused struct field
- 7a17f44 update email inbox configuration help text and add link to documentation - update google and msft logo
- b95a158 fix loader for oauth connect
- 1c0518b fix tests
- cfdb82c fix tests
- 70a5996 fix tests
- a63c073 fix strip conversation uuid from receipient address as it could be the inbox email with plus variant - adds test cases for util functions that strip inbox email. - update make file to include frontend unit tests
- 096bc87 Feat: add plus-addressing for conversation matching on incoming emails
- f6d8e40 validate reconncted inbox email addr with the inbox being updated
- 895a74b encrypt ai provider keys - add flow types to oauth inboxes to prevent accidental updates
- f473870 fix: delay toast notifications for OAuth callback messages remove unncessary route redirect
- 22af66c Feat: match incoming messages to conversations using reference number in the subject.
- e4f260e fixes for msft email provider
- b7103b2 show oauth callback error / success messages as toast. Add logs for errors and minor refactor
- 2540b7e add Tenant ID input for Microsoft OAuth provider
- c7f1f23 fix deadlock on token refresh
- 4455411 fix do dot encrypt client id remove superfluous arg set default imap scan interval to 5 mins
- 5c1d0af fix: handle error when marshalling decrypted app settings
- 94202e2 refactor: update OAuth flow to use Redis for state management instead of storing it in session - Replace Google logo with SVG
- 0a70204 refactor and clean up remove uncessary token refresh on init of email inbox
- 2a238a7 -fix email notifications not working. - reload app settings when notification settings are changed to trigger admin banner prompting user to restart app - remove unncessary dummy password check before retaining passwords as an empty password check is enough.
- 4de936d remove omitempty from tags remove unused fn
- 5c364fb fix oauth credentials not being saved correctly , refactor use exisitng oauth pkg for oauth functionalities
- d213ce9 remvoe unnecessary define emits import
- f3ddc26 wip inbox oauth and encryption
- 34888ce refactor: update draft handling to retrieve all drafts for a user instead of fetching drafts per convo on click.
- 1423c18 fix highlighted / hovered macro preview not changing - make macro text size bigger
- 9969ae6 fix race in setting draft content
- 029d5cf add newly translated languages to general settings
- 36a716e Merge pull request #171 from csr4422/fix/reply-draft-persistence
- 5f61785 remove unncessary ref
- b0c5003 Delete drafts when there's no meaningful content in them. - show
pencilicon in conversations if they have draft. - auto-delete drafts if draft has empty content - 364b551 fix: add meta size validation in draft handling
- aed1b90 fix: reorder migration list to ensure correct upgrade path
- 36e03c1 Merge branch 'main' into fix/reply-draft-persistence
- 07457ac fix: skip attachments already associated with another model in message sending
- b1e0295 allow setting same macro content again
- 67ade61 store content in local storage first and sync with backend on certain events
- cfec05c refactor reply drafts
- decbdaf Merge pull request #201 from jleroy/i18n/update-2025-12-21
- c160210 fix: ensure draft cleaner runs only with a positive retention period
- 0f67df9 fix: update draft retention duration to default to 720 hours if not set
- 6bcc16e feat: along with editor content also save attachments and macro actions in drafts
- 162ba34 Update translations
- 5bd053a Update roadmap with WIP status for features
- cf67b96 add missing migrations check if drafts are dirty before saving draft
- 159e8ae fix errors while fetching draft on conversation without any saved drafts
- bb6b56e Merge pull request #196 from trabulium/fix/null-password-handling
- fe4b0ac clean up
- 4a70b94 clean up draft store
- 2707231 add draft retention policy with automatic cleanup of stale drafts
- d804740 remove unncessary enforceconversation access in delete and get convo draft
- bb89728 Update README.md
- 546fc16 Update README.md
- 4cbc55f add roadmap.md
- 0a245e0 Revise developer section in README
- 1d4394e Update contribution guidelines for clarity
- 7a153d7 Create CONTRIBUTING.md with guidelines and process
- bf63fd6 fix border in convo list
- 9a43bce add bottom border to conversation list when there's only 1 conversation in list
- 0a5e5de fix: Handle NULL password field for imported contacts
- c740de7 refactor: remove localStorage, use database-only draft storage
- eddaf4a refactor: make draft manager async for backend integration
- 2cf8de6 feat: integrate backend API with draftStore
- 5667039 feat: add draft API service methods
- 459bcae feat: register draft API endpoints
- 2db50b7 feat: add HTTP handlers for draft endpoints
- e6bafb2 feat: implement draft manager methods
- cd8c5ab add ConversationDraft model
- 0825417 Add database queries for draft CRUD operations
- cabd7af Add conversation_drafts table for draft reply storage
- 8b07ab7 Revert unnecessary aliasing of htmlContent and textContent
- e22dbdf fix: call fetchAiPrompts on component mount and fix formatting
- f98e59f fix: prevent macro watcher from clearing draft content unintentionally
- d867611 fix: improve draft persistence and prevent content loss on conversation switching
- d2f0287 refactor: optimize editor content sync to prevent unnecessary updates
- bd092c5 fix: prevent saving empty drafts to localStorage
- f452e02 feat: add draft persistence with eviction policy
- 41344b8 Merge branch 'main' into fix/reply-draft-persistence
- 077c7ad Use useStorage to sync draftStore state with localStorage
- 563d3ab fix: block global Ctrl+B shortcut when typing in text editor
- 284d421 fix: ReplyBox draft handling by integrating Pinia draft store
New Contributors
- @trabulium made their first contribution in #196
Full Changelog: v0.8.6-beta...v0.9.1-beta