Abhinav Raut
9892f9dae7
fix: shuffle users in team balancer to prevent ordering bias on app restart
2025-03-06 20:34:51 +05:30
Abhinav Raut
277586f025
fix: round robin assignment not working due to balancer being reloaded entirely.
2025-03-06 20:19:30 +05:30
Abhinav Raut
772152c40c
fix: filter out empty email message ids for setting email references headers.
...
chore: adds debug logs.
2025-03-06 12:24:18 +05:30
Abhinav Raut
8e15d733ea
fix: regression in sso login caused due to attempting in hiding client secret in the API response. Resolves #21
2025-03-05 16:13:13 +05:30
Abhinav Raut
d1f08ce035
fix: handle null user last active time when marking agents offline.
2025-03-05 04:24:06 +05:30
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
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
360557c58f
fix: remove client_id and client_secret from get-all-oidc query
2025-03-04 22:02:42 +05:30
Abhinav Raut
03c68afc4c
fix: max age not working for cookies
...
Switch from expires to max age for setting cookie expiry
Set default max age to 9 hours
2025-03-02 16:28:26 +05:30
Abhinav Raut
96ef62b509
fix: reduce pagination sizes for conversation and message lists
2025-03-02 03:03:33 +05:30
Abhinav Raut
1b63f03bb1
feat: include recipient details in email templates
...
With this the admin can simply add
```
Dear {{.Recipient.FirstName}},
```
To the default outgoing template and all outgoing emails will have the receipient name.
2025-03-01 20:04:49 +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
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
17efaf0f2c
fix: update password strength requirements and hint for system users
2025-02-24 02:42:27 +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
d2a79d9a10
feat: store last message sender in conversation as this will be used to show the Reply icon in the conversations list.
...
- Introduces new column `last_message_sender` in conversations table.
- Changes to propogate this new column in websocket updates.
2025-02-21 21:40:57 +05:30
Abhinav Raut
8567baa0e1
chore: remove 'In Progress' and 'Waiting' from default statuses
...
As an admin can always add custom statuses and expand upon the existing ones, the `In Progress` and `Waiting` statuses are not required.
2025-02-21 20:40:32 +05:30
Abhinav Raut
01c136c469
fix: handle unlimited limit for max auto assigned conversations too user.
2025-02-21 20:34:15 +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
a6eca649f4
feat: cache conversation messages
2025-02-20 03:41: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
37070770bf
fix: SLA status updates
2025-02-08 17:56:12 +05:30
Abhinav Raut
6d55cf73a4
fix: omit empty messages id from JSON marshal
2025-02-08 16:35:53 +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
c5cf62573e
fix: overview report sql
2025-02-06 03:04:18 +05:30
Abhinav Raut
9920448ac0
fix[sql]: move model_type first in JOIN for better index usage - (model_type, model_id)
2025-02-04 02:24:41 +05:30
Abhinav Raut
c8ee82e3e5
set 48 hr expirty to login cookie.
2025-02-04 00:47:06 +05:30
Abhinav Raut
37b3c4abcc
feat: adds waiting since in API responses and structs.
...
chore: rename senderTypeUser to senderTypeAgent to keep naming consistent.
2025-02-04 00:08:51 +05:30
Abhinav Raut
543fb07a94
fix indefinite block when processing imap messages.
2025-02-04 00:07:43 +05:30
Abhinav Raut
cfe15ba275
feat: adds waiting_since column to conversations, start saving waiting_since on agent and contact reply.
...
- fix: waiting since sort order, use the new `waiting_since` column.
2025-02-03 23:36:38 +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
d7ac76824f
cleanup: remove assigned_agent_id column from csat responses table.
2025-02-02 18:46:43 +05:30
Abhinav Raut
57015186bc
refactor and update doc strings.
2025-02-02 17:07:08 +05:30
Abhinav Raut
7ff2a7ea7d
doc: adds doc string for auth structs.
2025-02-02 16:59:57 +05:30
Abhinav Raut
a699619d7a
fix[IMAP]: Pass context to allow early exit from IMAP processing loops on cancellation
2025-02-02 14:17:23 +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
102b4f7fd4
fix: conversation object level permissions check.
2025-02-01 02:44:28 +05:30
Abhinav Raut
ba5e845932
chore: remove dead code.
2025-02-01 02:43:43 +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
60bb6e48bf
fix: user form enabled column omitted from marshal.
2025-01-30 01:44:33 +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