Railway
If you are using Railway.com please read this important announcement about moving postgres data to volume.
What's new
-
Widget language from the host page - set
languagein the widget settings or callLibredesk.setLanguage()to switch it.Example
Set the inbox language to automatic detection, then add
languageto your existing widget settings:<script> window.LibredeskSettings = { baseURL: 'https://support.example.com', inboxID: 'YOUR_INBOX_UUID', language: 'de-DE' }; </script> <script async src="https://support.example.com/widget.js"></script>
After the widget initializes, switch languages when the visitor changes your website's language:
window.Libredesk.setLanguage('fr-FR');
-
Earlier messages in email templates - use
{{ .PreviousMessages }}in outgoing email templates to quote messages the contact already saw.Example to add to your outgoing email template
{{ if .PreviousMessages }} <div style="margin-top: 28px; padding-top: 20px; border-top: 1px solid #ddd;"> <div style="margin-bottom: 16px; font-size: 13px; color: #888;">Previous messages</div> {{ range .PreviousMessages }} <blockquote style="margin: 0 0 20px; padding: 0 0 0 14px; border-left: 2px solid #ddd;"> <div style="margin-bottom: 6px; font-size: 12px; line-height: 20px; color: #888;"> On {{ .CreatedAt.Format "02 Jan 2006 at 15:04 MST" }}, {{ if .SenderName }}{{ .SenderName }}{{ else }}{{ .SenderEmail }}{{ end }} wrote: </div> <div style="font-size: 14px; line-height: 24px; color: #444; overflow-wrap: anywhere;"> {{ .Content }} </div> </blockquote> {{ end }} </div> {{ end }} -
Conversation sidebar section reordering - drag sidebar sections into the order you want.\
-
Updated translations
What's fixed
- Replies to emails with no subject no longer get rejected by strict SMTP servers and instead use the reference number as the subject.
- Reply notifications to agents now arrive reliably.
- Many other quality of life fixes and improvements.
Upgrade notes
- Always take a database backup before upgrading.
- Docker deployments should use the
v2.9.0-rc.10image tag. - Follow the steps here.
Changelog
- fe64652 Merge pull request #717 from abhinavxd/dependabot/go_modules/github.com/klauspost/compress-1.18.7
- e370711 Merge pull request #718 from abhinavxd/dependabot/npm_and_yarn/frontend/vite-6.4.4
- 3d2860b Bump vite from 6.4.3 to 6.4.4 in /frontend
- 8ffe47c Bump github.com/klauspost/compress from 1.18.0 to 1.18.7
- 004a586 Merge pull request #716 from abhinavxd/fix/admin-table-layout
- 7c97789 use stable IDs for admin table rows
- 2a31ef9 Merge pull request #712 from abhinavxd/qa/2.9.0-release
- 1616e4b improve admin table layout
- 30de4ca fix draft recipient test expectations
- c9fb6c1 normalize default template types on update
- 62fe692 allow repeated replies in outgoing email templates
- 61ff12b explain outgoing template validation
- 64b4424 cover SMTP authentication and revert campaign date changes
- da8ee16 revert recipient persistence in reply drafts
- 32d923d add a default layout for outgoing email templates
- a32c2a8 reject duplicate replies when saving email templates
- a328183 Merge remote-tracking branch 'origin/main' into qa/2.9.0-release
- fbe3aea Merge pull request #714 from maximilize/feat/sidebar-all-conversations
- 877ecb9 sidebar: list all of the contact's conversations, highlight the current one
- 7235288 isolate contacts in reply minimize tests
- 10ee92b remember the minimized reply box state
- 4a3dd0e add regression coverage for release fixes
- 4490525 Merge remote-tracking branch 'origin/main' into qa/2.9.0-release
- 95fed41 Merge pull request #711 from jleroy/i18n/update-2026-10-19
- c6a2142 fix campaign stats loading and update release tests
- 7fee393 fix issues found during release testing
- 4921685 Merge pull request #710 from abhinavxd/email-quoted-history
- 7d919ec show attachment label in reply notifications when the reply is only quoted text
- 43353a2 Update translations [2026-10-19]
- 36b46f1 skip quote-only replies in email history and check only the template for PreviousMessages
- 703f38f quote only messages the contact already saw in email history
- 114c80a add IsIncoming to quoted messages and escape sender fields
- d3acea7 add earlier messages as a variable in the outgoing email template
- aecc5a1 Merge pull request #709 from sneha-thyagarajan/fix/empty-subject-fallback
- ed07747 run gofmt on conversation models
- 8e9a2aa Merge pull request #708 from abhinavxd/capitalize-email-derived-name
- 9be2894 fix: fall back to reference number as email subject for empty-subject conversations
- a425c51 capitalize contact names taken from the email address
- 754991a Merge pull request #703 from abhinavxd/fix-participant-reply-notifications
- 3bc87d3 Merge pull request #668 from sunyinghao5438/widget-host-language
- dee7ee6 keep Help aligned with the widget language fallback
- c4723ea fix widget language fallback and Help loading after language changes
- 13bfa07 merge main into the widget language branch
- a58bdf6 fix language matching in the widget and help center
- 94cf376 remove the icon from the conversation empty state
- 1cda457 share email template variables and add notification greetings
- 8fc653c keep previous conversation links in the current list
- b490be4 update sidebar test for embedded assignee details
- 14d49a7 include assignee details in conversation responses
- d1d99be unassign the conversation in the participant reply delivery test
- d4fd025 fix actions landing on the wrong conversation after a switch
- b47e1f5 preserve participant tracking while filtering reply notifications
- 703504f batch agent lookups during assignment bursts
- 839128f keep alerts working when email templates fail
- 0a13ff5 fix reply notifications and repeated agent lookups
- 8a31476 Merge pull request #687 from abhinavxd/polish-app-interactions
- 8a230a9 fix automation form tests after the layout changes
- d25dcd1 fix UI consistency and simplify the design guide
- d340e01 keep older message loading from shifting the thread
- b7c15f2 make conversation list pagination less prominent
- a05ce89 center help center loading indicators
- 986329b fix conversation tag spacing and align list indicators
- 2fa0420 guide Juno toward concise and grounded answers
- b29d29f refine conversation layouts and Juno interactions
- bd5bfbc switch smtppool from fork to upstream v2.3.1
- 8a1d563 load older messages when the thread cannot scroll
- 8ad09b3 add conversation sidebar section reordering
- 07ec173 align app layouts and refine conversation controls
- 04421a9 unify admin controls and loading feedback
- 7f64b1e preserve sidebar width when resizing the window
- 883705d fix sidebar state and refine table and toast controls
- 5379473 fix panel resizing and style avatar fallbacks
- ee70f32 Merge remote-tracking branch 'origin/main' into polish-app-interactions
- a2c2fea update smtppool fork to latest fold-long-headers commit
- 7aa4ee6 merge main into the UI polish branch
- d6554de simplify search filters and improve loading feedback
- cee88dd Merge pull request #691 from abhinavxd/fix-unicode-text-truncation
- 3932e37 Merge pull request #587 from pmslava/email-template-inbox
- 9cc499c fix Unicode text truncation
- e499ea1 Merge pull request #689 from abhinavxd/parameterize-migration-version
- 3531342 Merge pull request #690 from abhinavxd/raise-macro-content-limit
- 9e2ae96 raise macro content limit to 100000 characters
- b36207b use a parameterized query to record migration versions
- d03d054 Merge remote-tracking branch 'origin/main' into polish-app-interactions
- 286ffd6 fix article width and previews after language changes
- 01bb0d9 Merge pull request #678 from fredrikblau/fix/674-gemini-thought-signature
- f8f02dc merge main and connect reply labels to their controls
- de62fb9 Merge pull request #684 from samuelsogbesan/feat/mobile-macro-picker
- f87d99f polish app layouts and fix UI regressions
- e7e2cce Merge pull request #686 from abhinavxd/fix-notification-body-length
- 44dc3f0 fix reply toolbar overflow on small screens
- e56fe5d trim long notification text so bell notifications save
- b9e009b fix(frontend): expose macros on mobile
- 6d9f551 preserve tool call extra_content so Gemini thought signatures round-trip
- f300f33 clear the help error when the language changes
- 2d76cb1 keep the latest widget language and reset help when it changes
- 475bf69 let the host page choose the live chat widget language
- f65ac06 conversation: expose the inbox to the outgoing email template
What's Changed (Auto generated)
- trim long notification text so bell notifications save by @abhinavxd in #686
- fix(frontend): expose macros on mobile by @samuelsogbesan in #684
- Preserve tool call extra_content so Gemini thought signatures round-trip by @fredrikblau in #678
- raise macro content limit to 100000 characters by @abhinavxd in #690
- use a parameterized query to record migration versions by @abhinavxd in #689
- Conversation: expose the inbox to the outgoing email template by @pmslava in #587
- fix Unicode text truncation by @abhinavxd in #691
- polish app layouts and fix UI regressions by @abhinavxd in #687
- Live chat widget: let the host page choose the UI language by @sunyinghao5438 in #668
- fix reply notifications and repeated agent lookups by @abhinavxd in #703
- capitalize contact names taken from the email address by @abhinavxd in #708
- Bug fix: fall back to reference number as subject for empty-subject email conversations by @sneha-thyagarajan in #709
- add earlier messages as a variable in the outgoing email template by @abhinavxd in #710
- Update translations [2026-10-19] by @jleroy in #711
- sidebar: list all of the contact's conversations, highlight the current one by @maximilize in #714
- fix issues found during release testing by @abhinavxd in #712
- improve admin table layout by @abhinavxd in #716
- Bump vite from 6.4.3 to 6.4.4 in /frontend by @dependabot[bot] in #718
- Bump github.com/klauspost/compress from 1.18.0 to 1.18.7 by @dependabot[bot] in #717
New Contributors
- @samuelsogbesan made their first contribution in #684
- @sunyinghao5438 made their first contribution in #668
- @sneha-thyagarajan made their first contribution in #709
- @maximilize made their first contribution in #714
Full Changelog: v2.9.0-rc.9...v2.9.0-rc.10