v2.8.0
t8y2/dbxv2.8.0Aug 22, 2026by github-actions[bot]
AI Summary
Introduces a comprehensive Help Center (Knowledge Base) feature set, allowing users to build public documentation sites with custom themes and AI integration, alongside mobile-friendly agent dashboard improvements.
Key Highlights
- Public articles and custom domain support for the Help Center
- AI agent answers powered by published articles
- Mobile-friendly agent dashboard
- Contact deletion and data export for GDPR compliance
- New Geist font and performance optimizations
New Features
- Public articles
- Custom domain for help center
- AI answers from articles
- Mobile-friendly agent dashboard
- Contact deletion and data export
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