v2.8.0

m-bain/whisperXv2.8.0Aug 22, 2026by github-actions[bot]

AI Summary

Introduces a comprehensive public help center with customizable layouts and AI-powered answers. Enhances the mobile experience and adds data export capabilities.

Key Highlights

  • Public help center with search and custom domains
  • AI agent integration for article answers
  • Mobile-friendly agent dashboard
  • Performance improvements
  • Contact data export

New Features

  • Public help center (collections, search, locales)
  • AI answers from articles
  • Mobile dashboard
  • Contact deletion and data export
  • New font (Geist)

Full Release Notes

## What's new

### Help center (knowledge base)

Demo - https://support.libredesk.io

- **Public articles** - write collections of articles and libredesk publishes them as a public site.
- **Two layouts** - a documentation sidebar layout or a classic cards layout, with your own theme, logo, CSS and JS.
- **Search** - visitors get full-text search with suggestions as they type.
- **Multiple locales** - publish articles per locale, and visitors pick their language from the navbar.
- **Custom domain** - serve a help center on your own custom domain.
- **AI answers from articles** - the AI agent can answer from your published articles, and you pick which ones it is allowed to use.

### Others

- **Mobile friendly agent dashboard** - the layout and touch targets now fit a phone screen, so you can manage conversations from your phone.
- **Contact deletion and data export** - delete a contact, or export everything you hold on them for GDPR.
- **New font** - the app now uses Geist.

## What's fixed

- Performance improvements - the app uses less memory and CPU overall.
- Incoming emails with accented or non-English characters no longer arrive as garbled text.
- Livechat messages no longer vanish when an attachment takes a long time to upload on a slow connection.
- The phone number field in the livechat pre-chat form now detects the visitor's country code correctly.
- The overview report no longer counts private notes or unsent drafts in message volume.
- Many other quality of life fixes and improvements.

## Upgrade notes

- Always take a database backup before upgrading.
- Follow the steps [here](https://docs.libredesk.io/getting-started/upgrade).

## Changelog
* 086b0820 Merge pull request #529 from abhinavxd/deflake-general-settings-form-spec
* 66158673 deflake the general settings form validation tests
* 2138c6e1 Merge pull request #528 from abhinavxd/fix-livechat-preview-start-button
* ce669f0d read the per user type config in the livechat widget preview
* b2f28214 Merge pull request #527 from abhinavxd/raise-response-body-pool-limit
* c0c21bc5 raise the response body pool limit to 1mb
* cd34ceb9 Merge pull request #526 from abhinavxd/fix-widget-slow-upload-message
* 6e9d23a4 raise the default read timeout to 60s
* f6ba2912 fix widget messages vanishing when upload takes over 10 seconds
* 26cfa235 Merge pull request #525 from abhinavxd/downscale-avatars-on-upload
* 5e168eae raise the avatar upload limit to 10mb
* b8ddd7e3 resize avatars once on the server at 512px
* fe243aa9 downscale avatars to 256px on upload
* 253efbab Merge pull request #524 from abhinavxd/fix-overview-outgoing-count-private-notes
* 85a404c8 count only sent outgoing messages in the overview volume
* cccd2dec exclude private notes from the overview message volume counts
* 8d63f68a Merge pull request #523 from abhinavxd/close-ws-on-shutdown
* 6ee25df7 show the visitor label on the widget messages tab
* 19146541 use the country code label and gate the conversations list button too
* beb8aeaf update agents offline count to include 'away' status
* a6e7812c name the field in pre-chat length errors and hide the start button when blocked
* 5813ac3e remove comment
* 40b86c2d check the widget client's closed flag after refreshing the read deadline
* 8a881909 actually close agent websockets on kick and shutdown
* 4ddec80f ignore frames from a replaced widget socket
* e324e136 drop widget sockets when a livechat inbox reloads
* 35ea94a4 set the shutdown budget to 8s
* 2c52e69b reword the shutdown timeout log
* 1028e688 set the shutdown budget to 10s
* 3393b6e1 close websockets and bound the http server shutdown
* 2b5b73ae Merge pull request #521 from abhinavxd/fix-font-gaps
* 849ebbcc set the chart font on body instead of overriding root
* 102e9fc6 apply Geist to toasts, charts and form controls
* 9c219c38 Merge pull request #520 from abhinavxd/fix-participant-insert-log-spam
* 364d11aa stop duplicate key errors when adding conversation participants
* 9475e6dd Merge pull request #516 from abhinavxd/geist-and-hc-page-cache
* 7b1ca527 Merge pull request #519 from abhinavxd/fix-report-overview-queries
* 9626d512 count only away_manual agents as away
* f4cff729 keep days 0 as today in report clamp
* a9867dce move public help center api under /api/v1 and add security headers
* 3218f791 fix away agent count, index resolved_at and clamp report days
* 01c27715 shorten help center cache helper names
* 4d7c6860 Merge remote-tracking branch 'origin/main' into fix-report-overview-queries
* 51bb8be6 Merge pull request #510 from abhinavxd/reduce-memory-and-cpu-hotpaths
* 51f7bace fix and speed up the report overview queries
* 6c024317 evaluate SLA synchronously on first reply, resolve and reopen
* 51621254 broadcast the remaining sla fields when a policy is applied
* ec629ba0 use slices.Delete to remove a websocket client from the hub
* 02906ef5 clear sla deadlines on policy delete and stop double counting next response
* 6fa5d66b recompute conversation SLA deadline when next response is settled
* 1aaf021b add id tiebreaker so article reads and view counts pick the same row
* 6208b291 fix cache misses, wrong view counts, and silent cache errors in the help center
* 3da864b5 remove comments that narrate rejected designs
* ae8c6ba6 fix stale and broken pages in the help center cache
* c865748c switch to Geist and cache help center pages
* 6a6a0a81 simplify websocket client and fix handshake error response
* 3979958f Merge remote-tracking branch 'origin/main' into reduce-memory-and-cpu-hotpaths
* a0d9929e Merge pull request #513 from abhinavxd/fix/qp-charset-mojibake
* 1d9c20f3 guard websocket client sends against the channel close
* a1cae0b8 close and release websocket connections promptly on failure paths
* 4fce040d reduce websocket per-connection memory and hot-path allocations
* 44688cb9 remove nil envelope loop and tidy imap comments
* a3d29011 fix mojibake in incoming quoted-printable emails
* de3d5f76 guard against empty pending notifications in resolved-conversation test
* 16e3a7db recompute conversation next sla deadline on status change
* 3a9e66d0 batch the settled sweep deadline recompute and abort re-apply when judging the old sla fails
* d0daeb86 Merge remote-tracking branch 'origin/main' into reduce-memory-and-cpu-hotpaths
* 5dbcebe3 judge outcomes that already happened before superseding an sla
* d73151a0 fix sla status labels, notification cleanup, and the deadline overwrite race
* 81f1deb1 skip the first-response deadline once the agent has replied
* fa865825 compute next sla deadline as the earliest open obligation including live next-response countdowns
* 49459a19 log pending sla counts only when non zero
* 097585a1 keep events with a stamped outcome that the tick has not statused yet
* 05c6e590 add comment explaining the closed cte gate
* ee82b772 use != instead of <> in sla queries
* ced045f7 keep applied slas whose next-response events scored instead of cascading the history away
* 7816bd1d filter applied slas by date range inside the latest-row cte
* 976307d9 count only each conversation's latest applied sla in overview report
* e0127ce3 add short comments above each cte in the changed sla queries
* 5822c09c add starvation, quiet tick and cross-conversation isolation tests
* 005e6a3f add concurrency, business hours, warning schedule and deadline repair tests
* 06b949a4 cover all sla policy metric combinations and clean orphaned events on re-apply
* c2b8dd7f add resolution-only sla policy test
* 1a27f23d add postgres-backed tests covering the full sla lifecycle
* db8cb519 exclude next-response-only slas from the settled sweep so their live deadline is not wiped
* 52be8821 chain apply-sla ctes so the insert runs after the old pending row is closed or deleted
* 91f897a7 Merge pull request #509 from abhinavxd/test-coverage
* b10a854d make settled sla sweep self healing and repair conversation deadline in the same statement
* c5661664 Merge pull request #511 from abhinavxd/fix-private-note-delete-authz
* 3568aa18 restrict private note deletion to the note author or an admin
* db60ac04 close settled slas only for rows whose evaluation fully succeeded
* 8d0aa76d clean up test fixtures and fix the tag name validation wording
* 4277ff50 fix sla apply atomicity and superseded sla cleanup, read static file bytes once
* b50f1177 tighten test fixtures and assertions from review
* 3bbbb2c7 fix ci e2e failures and unreachable zod defaults
* 71e46490 only upgrade the api secret hash that was just verified
* 9708f78c reduce memory and cpu use in sla, static asset and api key paths
* 76d0ef4f cut restating comments from the test suite
* 87255758 stop webhook form spec depending on a clipped validation message
* 7cce27db stop livechat inbox form discarding edits when a home app is changed
* d9588068 stop role and business hours forms discarding edits, add inbox and template specs
* 7a104bff add browser specs for agent, role, status and tag forms
* f5ce7461 add create conversation, incoming message and settings browser specs
* 44c592d3 add browser specs for automation, help center and ai forms
* d206db2f document how to run the e2e suite locally
* 4eb9297e reword delete skips to note the ambiguity rather than assert a bug
* d91a724e add conversation lifecycle browser spec
* 357a259c verify every claimed bug against the live api and rewrite the findings
* 3ca102bd add conversation, contact and view api specs and merge headers in cy.api
* 8412c90a add browser specs for team, sla, macro, webhook and custom attribute forms
* cf14aa60 add remaining form schema tests and document findings
* f4763dfc add api contract specs, form schema tests and validator unit tests
* fb4ad5f0 add cypress api and page sweep tests, fix agent and context link bugs they found
* eb4a8c49 Merge pull request #507 from abhinavxd/fix-reply-box-block
* f3efea76 add reindex debug logs and quiet two noisy log lines Fix reply box editor blocking dialogs
* 92461196 Merge pull request #504 from abhinavxd/fix/team-assignee-hooks-and-helpcenter-theme
* 5433187e dedup the recipient email loop and apply review fixes
* 7fd9604c reject whitespace-only article content
* 758e2034 Merge pull request #505 from abhinavxd/feat/pprof-toggle
* 92ee4401 log pprof startup after the listener binds
* 43f09385 enable block and mutex profile rates via config
* b1baa6f8 drop pprof block from sample config
* f8f0ce2f add optional pprof server behind app.pprof config
* 6a74d505 send an error response from inbox and settings handlers
* d7fdc5c9 log a failed assignee removal on team change
* a3515c5c drop the unchanged claim from the invalid theme error
* 997a9427 count code points in help center length checks
* e19a428d harden help center validation and fix automation previous_* values
* 94b7f8eb Merge pull request #501 from abhinavxd/chore/i18n-label-cleanup
* d0f236a5 reuse a global link term for editor and help center labels
* a5dcfa1f Merge pull request #502 from chiliec/fix/update-checker-timeout-body-leak
* 7163050b simplify update checker fetch and tests
* 9586a638 fix(updates): add HTTP timeout and always close body in update checker
* f2746438 Update README.md
* ae4c4905 Update README.md
* d0ff0c6f trim redundant editor and help center labels, reuse global i18n keys
* 7f5a7e09 Merge pull request #500 from abhinavxd/fix/welcome-email-logo
* 0c99b015 fix missing logo in emails on a fresh install
* dd7fc1c5 Merge pull request #499 from abhinavxd/fix/sidebar-view-kebab-mobile-align
* 93ed86df fix sidebar view kebab alignment on mobile
* 78c52bf1 Merge pull request #473 from pat-s/pr/mobile-dashboard
* 9106ea1f fix composer closing on a blocked send, note keyboard focus, and sheet close target
* 2fd104f4 remove keyboard focus and desktop splitter changes unrelated to mobile
* daeab85e reveal hover-hidden attachment and attribute controls on keyboard focus
* dd21f5d8 fix mobile inbox nav, touch-hidden create view button, and send during inline upload
* 7c1e681d add a context menu entry to start bulk selection on touch
* 0e8760af Merge branch 'main' into pr/mobile-dashboard
* f9fcba88 polish mobile layout and touch targets
* 8ff3e4bd Merge pull request #498 from abhinavxd/fix/phone-country-detection
* 5c6f4437 fix timezone country mappings, phone error overlap and welcome workflow
* 911fbe5b detect phone country from browser timezone in the pre-chat form
* 8aa70676 Update README.md
* 474c2752 Add Railway deployment section to README
* 7d1530ac Merge pull request #497 from abhinavxd/pr-welcome-workflow
* e2305736 pin first-interaction action to a commit sha and move to v3
* e1ed3989 add workflow to welcome first time contributors on their first pr
* 3620ae03 fix(ui): make dialogs fit a narrow viewport
* ff5e68d7 fix: keep the selection checkbox visible on keyboard focus
* d747afa3 fix: reveal hover-gated controls on touch devices
* 62505105 Merge pull request #494 from abhinavxd/fix-oidc-login-errors
* 71f3ba53 simplify oidc login error messages and merge provider error into login failed
* d4d36994 Merge pull request #426 from abhinavxd/worktree-gdpr
* 0a38fb7c log the model and file details of each media the sweeper deletes
* f7a1f96a wait 24 hours before sweeping attachments whose message is gone
* 12fa3831 show blocked badge on contact page and use alert dialogs for block and delete
* 08d8febc make the widget dev server port configurable
* ee6bc6ec add csat responses to contact export and fix download revoke
* 5735214d Merge remote-tracking branch 'origin/main' into worktree-gdpr
* 449e2ee2 surface specific oidc login errors on the login page
* 91778135 Merge pull request #440 from abhinavxd/help-center
* 1ac0c77b harden help center public routes and render a themed 500 page
* 0d6c1691 focus article editor at the end of content when opening an article
* 09892669 fix locking and depth handling in help center article move and tree
* 5ad6b4ac document rate limit settings in config.sample.toml
* 2183e814 move help center branding columns into theme and ship Instrument Sans
* 6e020dd6 improve help center tree and docs template hierarchy UX
* 9c1b183e use root url for help center preview links and fix locale hints
* 7ea3042d remove archived article status and fix help center tree loading
* b6a35773 add icons and destructive styling to admin dropdown menus
* b972e144 fix article save scan error, store relative media URLs and delay startup cleaners
* 2e5ec787 stop logging anonymous no-session requests as errors and add auth method consts
* 6cc06ed8 render help center theme text as markdown instead of raw HTML
* 6aa887f7 add a locale picker and weighted full-text search to the help center
* 1feb3743 dedupe help center template partials and reuse the markdown link helper
* 2476ee26 center the article editor toolbar and stop the feedback box resizing
* cc6193c5 harden media serving and fix a few help center review findings
* 11611de2 fix the second round of help center review findings
* 5027fe23 fix a batch of help center review findings
* 7ebec4df move the help center migration to v2.8.0 and drop two unused endpoints
* c494904e use a lucide chevron for the collapsible marker
* 57af9bc2 add syntax highlighting and a copy button to article code blocks
* 95346c75 Merge branch 'main' into help-center
* 6083d2f0 serve help centers at the root of a custom domain
* b138b225 Merge pull request #487 from abhinavxd/cache-go-build-release
* 2f8637cb warm the go build cache from main so release runs can restore it
* c6114680 use a dedicated always-saving go build cache in the release workflow
* 8ca05b24 share collection cards between help center templates
* fbbef49b fix help center feedback counts, empty state, mobile logo and a11y
* 048eb1ac add page template setting for help center with docs and classic layouts
* 68bb8538 fix help center code review findings across public pages and admin
* aa54bfa4 fix slug, locale, theme and embedding bugs in help center
* 1e88b124 Merge remote-tracking branch 'origin/main' into help-center
* 6f2f0469 Merge remote-tracking branch 'origin/main' into help-center
* ec6a9cd9 Merge remote-tracking branch 'origin/main' into help-center
* 04822912 Merge remote-tracking branch 'origin/main' into help-center
* ee1acc68 fix: mount the contact sidebar collapsed when it is persisted closed
* ebce66a9 feat: mobile support for the agent dashboard
* 0eecef97 scope robots.txt and sitemap index to the requesting host
* 26f688fb Merge branch 'main' into help-center
* 353558ce add a public URL per help center and fix code review issues
* b4b4251e Merge remote-tracking branch 'origin/main' into help-center
* 90139287 fix editor, preview and public page issues from code review
* d9ede860 hide the announcement banner when its text sanitizes to nothing
* f7a662e1 allow basic html in help center tagline and announcement text
* 5e320b8e add article preview, announcement banner, and author selection to help center
* 341d5b0c show the help center permission on the role form
* 9cac787f fix preview sources and reindex articles when a collection changes
* e5bfe793 keep tables and link urls in embedded article text
* 3b921857 tighten help center permissions and fix editor and public page issues
* 60891069 add live search suggestions and card icon layouts to help center
* f8614853 add help center preview and fix locale and URL handling
* 1fc606b8 fix help center issues and reuse global i18n keys
* 6aa221a4 merge origin/main into help-center
* 7b696903 add SEO, localization, and drag reordering to the help center
* 38983f17 Merge remote-tracking branch 'origin/main' into help-center
* 76db5aa8 fix help center bugs and share the embedding and article-content code
* baff30fc add help center with public pages, admin management and AI article indexing
* ab2a1471 log avatar delete failures and export more contact fields
* 889e219a move contact actions into a dropdown and share blob download helper
* bfbcd0a8 add contact deletion and data export for GDPR compliance

## What's Changed (Auto generated)
* use a dedicated always-saving go build cache in the release workflow by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/487
* Help center by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/440
* add contact deletion and data export for GDPR compliance by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/426
* surface specific oidc login errors on the login page by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/494
* add workflow to welcome first time contributors on their first pr by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/497
* detect phone country from browser timezone in the pre-chat form by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/498
* feat: mobile support for the agent dashboard by @pat-s in https://github.com/abhinavxd/libredesk/pull/473
* fix sidebar view kebab alignment on mobile by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/499
* fix missing logo in emails on a fresh install by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/500
* fix(updates): add HTTP timeout and always close body in update checker (#445) by @chiliec in https://github.com/abhinavxd/libredesk/pull/502
* trim redundant editor and help center labels, reuse global i18n keys by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/501
* Feat/pprof toggle by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/505
* harden help center validation and fix automation previous_* values by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/504
* add reindex debug logs and quiet two noisy log lines by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/507
* restrict private note deletion to the note author or an admin by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/511
* Increase Test coverage by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/509
* fix mojibake in incoming quoted-printable emails by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/513
* reduce memory and cpu use in sla, static asset and api key paths by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/510
* fix and speed up the report overview queries by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/519
* switch to Geist and cache help center pages by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/516
* stop duplicate key errors when adding conversation participants by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/520
* apply Geist to toasts, charts and form controls by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/521
* close websockets and bound the http server shutdown by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/523
* exclude private notes from the overview message volume counts by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/524
* downscale avatars to 256px on upload by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/525
* fix widget messages vanishing when upload takes over 10 seconds by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/526
* raise the response body pool limit to 1mb by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/527
* read the per user type config in the livechat widget preview by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/528
* deflake the general settings form validation tests by @abhinavxd in https://github.com/abhinavxd/libredesk/pull/529

## New Contributors
* @pat-s made their first contribution in https://github.com/abhinavxd/libredesk/pull/473
* @chiliec made their first contribution in https://github.com/abhinavxd/libredesk/pull/502

**Full Changelog**: https://github.com/abhinavxd/libredesk/compare/v2.7.1...v2.8.0