Commit Graph

116 Commits

Author SHA1 Message Date
Abhinav Raut 8551b65a27 fix: set references header in all outgoing emails, set the last 20 messages.
feat: set conversation reference number in the subject of conversation for better thread matching.
fix: hide CSAT link from conversation last message.
2025-03-05 03:49:22 +05:30
Abhinav Raut eb499f64d0 chore: adds v0.4.0 to migration list. 2025-03-05 02:33:03 +05:30
Abhinav Raut 494bc15b0a feat: Enable agents to create conversations from the UI
Before this feature the only way to create a conversation was by adding inbox and sending an email.

Agents first search contacts by email, see a dropdown select an existing contact or fill a new email for new contact.

The backend creates contact if it does not exist, creates a conversation, sends a reply to the conversation.
Optinally assigns conversation to a user / team.

fix: Replies to emails create a new conversation instead of attaching to the previous one.

Was not happening in gmail, as gmail was sending the references headers in all replies and I missed this completely. So when libredesk searches a conversation by references headers it worked!

Instead the right way is to generate the outgoing email message id and saving it in DB. This commit fixes that.

There could be more backup strategies like putting reference number in the subject but that can be explored later.

chore: new role `conversatons:write` that enables the create conversations feature for an agent.

chore: migrations for v0.4.0.
2025-03-05 01:17:42 +05:30
Abhinav Raut 10b4f9d08c feat: show app version in admin tab
fix: view form validations and issues with reactivity
feat: save team inbox and view inbox dropdown state in localstorage.
fix: view inbox dropdown icon alignment.
2025-03-02 20:49:19 +05:30
Abhinav Raut 8f6295542e fix: destroy user session when user account is disabled. 2025-03-02 19:17:42 +05:30
Abhinav Raut 58825c3de9 fix: handle invalid sessions by destroying them and redirecting to login 2025-03-02 16:31:00 +05:30
Abhinav Raut 26d76c966f feat: allow setting OpenAI API KEY from the UI.
feat: new `ai:manage` permission for the same
Migrations for new role.
2025-03-01 19:40:18 +05:30
Abhinav Raut 1ff335f772 fix: improve welcome email template styling and content
fix: extra large app logo in base template.
refactor: standardize template variables, explicitly pass variables for rendering into template
2025-03-01 19:10:50 +05:30
Abhinav Raut 98534f3c5a fix: reduce update check interval and initial sleep duration
As Libredesk is Alpha I will be pushing quick updates and fixes
2025-02-28 22:12:01 +05:30
Abhinav Raut da5dfdbcde fix: prevent email enumeration in reset password flow. 2025-02-28 20:57:47 +05:30
Abhinav Raut c75c117a4d fix: improve password handling and error reporting during password reset 2025-02-27 01:58:08 +05:30
Abhinav Raut 67e1230485 feat: agent availability status
New columns in users table to store user availability status.

Websocket pings sets the last active at timestamp, once user stops sending pings (on disconnect) after 5 minutes the user availalbility status changes to offline.

Detects auto away by checking for mouse, keyboard events and sets user status to away.

User can also set their status to away manually from the sidebar.

Migrations for v0.3.0

Minor visual fixes.

Bump version in package.json
2025-02-26 04:34:30 +05:30
Abhinav Raut fcbd16f042 feat: implement app update checker and UI notification 2025-02-25 02:49:09 +05:30
Abhinav Raut 425bb4ed04 feat: add database upgrade functionality (adapted from listmonk) 2025-02-25 01:35:27 +05:30
Abhinav Raut 89eb05f337 feat: disallow edits for admin role
- chore: minor layout fixes
- chore: adds doc strings to handlers
2025-02-24 22:07:24 +05:30
Abhinav Raut 5361bcb24f feat: dockerize libredesk
- feat: new flag for idempotent installation `--idempotent-install`
- feat: new flag to skip yes/no prompt `--yes`
- feat: new flag for upgrades `--upgrade`
- refactor: update doc strings and sample toml file.
- chore: update .gitignore.
2025-02-22 23:33:18 +05:30
Abhinav Raut 62e38814c7 feat: API to discover OIDC provider
- fix: discover oidc provider first before attempting to create one.
2025-02-21 20:34:15 +05:30
Abhinav Raut 3365dec441 fix: disallow search queries with less than 3 characters 2025-02-20 03:36:22 +05:30
Abhinav Raut 642f97af69 fix: fixes to sidebar for smaller devices.
- fix: avatarless contact message bubble.
- fix: set viewport width to device width.
- revert[backend]: remove demo env check for starting backend services. i changed my mind.
2025-02-19 02:08:45 +05:30
Abhinav Raut 9d3ca81796 chore: increase sidebar width
feat: demo mode - don't start services.
2025-02-18 02:02:16 +05:30
Abhinav Raut ce33b6e2a4 chore: update config sample toml.
- remove s3 bucket bucket type from config, make bucket private by default.
2025-02-13 00:49:22 +05:30
Abhinav Raut 6b545fe2fe feat: update make file adds dev environment targets. 2025-02-13 00:49:22 +05:30
Abhinav Raut 356a206110 fix: new incoming messages having 0 attachments in API responses, upload attachments first before sending out websocket updates.
- refactor: stringutils package remove unncessary `string` in function names.
- minor refactors.
2025-02-08 18:04:02 +05:30
Abhinav Raut bc3b458d2c feat: message activity inconverstions when a new tag is added. 2025-02-07 03:48:54 +05:30
Abhinav Raut 046bc46196 refactor. 2025-02-07 02:59:22 +05:30
Abhinav Raut ceb076bbba refactor: organize frontend project structure
- feat: add toggle for conversation sidebar
- save sidebar state in localstorage.
2025-02-06 03:33:13 +05:30
Abhinav Raut 9b7ecd65f0 rename handler 2025-02-03 23:37:09 +05:30
Abhinav Raut 6993d972ab fix[SLA]: Use conversation created_at time as start time for SLA calculation. This makes sure when SLA is changed for a conversation the elapsed time carries over.
refactor: improve error handling and update comments for clarity
2025-02-02 23:51:50 +05:30
Abhinav Raut d3c2cc2527 feat: add CSAT sending functionality and improve error handling in templates
feat: automation action to send CSAT.
- minor refactors.
2025-02-02 21:03:09 +05:30
Abhinav Raut 57015186bc refactor and update doc strings. 2025-02-02 17:07:08 +05:30
Abhinav Raut 0ea9038a3f refactor oidc auth 2025-02-02 16:59:46 +05:30
Abhinav Raut b15c07c5a6 fix: return user friendly error messages on initializing new oidc provider. 2025-02-02 14:13:49 +05:30
Abhinav Raut 9939d6206f feat: reload app constants and Templates on update of app settings 2025-02-01 05:34:19 +05:30
Abhinav Raut 1549e87370 fix: OIDC login. 2025-02-01 04:23:26 +05:30
Abhinav Raut be80c51e32 feat: public handle to get available/ enabled oidc providers. 2025-01-30 01:46:33 +05:30
Abhinav Raut 52178238a7 fix: incoming email attachments being ignored for uploads
- make disposition media column null in code. use null type.
2025-01-30 01:45:54 +05:30
Abhinav Raut 966707191d fix: oidc hide secrets in json marshal
- adds new public handler that returns available providers.
2025-01-30 01:43:44 +05:30
Abhinav Raut 9661e9d62d fix: send user friendly error messages for ai provider request errors. 2025-01-30 01:42:19 +05:30
Abhinav Raut d291c3f4b9 feat: conversation reference sequence numbers with optional prefix, adds a postgres function that takes optional prefix and combines the sequence number with it. e.g. TIK100 where TIK is the reference is the prefix and 100 is the sequence number.
- feat: start conversation sequence number from 100.
- fix: enforce consistent ON DELETE behavior across schema relationships.
- fix: prevent application of same SLA to a conversation when assigned team changes.
- fix: Automation apply SLA action use assigned team's working hrs and timezone first and then fallback to workspace timezone and working hours.
- frontend fixes
2025-01-29 00:49:36 +05:30
Abhinav Raut 96564595d7 feat: previous conversations in conversation sidebar
- UI improvements in Conversation sidebar.
2025-01-25 18:25:14 +05:30
Abhinav Raut 140dae305c feat: max active conversation auto assignement limits to agents 2025-01-25 16:40:11 +05:30
Abhinav Raut cc6b16162d feat: re-open closed, resolved and snoozed conversations. 2025-01-25 05:01:11 +05:30
Abhinav Raut 52e401c601 feat: email cc and bcc in conversation replies
- feat: adds cc and bcc inputs in conversation text editor.
- feat: mask conversation id in api responses.
- customize shadnc dialog to hide close button & cross icon.
2025-01-25 03:47:17 +05:30
Abhinav Raut 3c71ab35ff Feat: Add SLAs per team
- Feat: Provide the ability to change SLAs for conversations; this will start a new deadline calculation from the time the SLA is set.
2025-01-24 04:34:51 +05:30
Abhinav Raut 8ded2692a3 feat: ability to unassign converstions, new uassigned dropdown options in conversations sidebar for teams and users. 2025-01-23 01:51:22 +05:30
Abhinav Raut 50188352a5 fix: Use SyncedEnforcer in casbin, fixes panics.
feat: store user roles in user roles table, drops the roles table on users table.
feat: standardize column names in schema, renames disabled bool to enables.
- vue router fixes to allow components / pages to rerender after creating an object in db.
- minor fixes and refactors.
2025-01-22 03:40:32 +05:30
Abhinav Raut 94b39fc0fd feat: views now don't need the inbox type value on which the filters have to be applied, it generates dynamic sql based on the user permissions and filters them 2025-01-21 02:36:43 +05:30
Abhinav Raut 16b6ad96ea refactor[backend]: pick worker counts and intervals from config. 2025-01-20 02:13:44 +05:30
Abhinav Raut 0c01b53b09 feat(conversations): add trigram index for searching ref numbers
feat(messages): add trigram index for text content search
- feat: UI animations for conversation and messages list.
- Simplify websocket updates.
2025-01-19 23:10:53 +05:30
Abhinav Raut 87c14aa15d feat: Macros, macros not completely replace canned responses as they do the same job as canned repsonse.
- tiptap editor fixes for hardlines.
- set app font to jakarta, fix shadcn components having a different font.
- UI improvements on /admin
- UI improvements on inbox tab.
2025-01-17 04:57:01 +05:30