Abhinav Raut
3845b03337
fix: handle cases where last name is missing in full name computation. Particularly fixes an extra whitespace in rendered email template
...
e.g.
"Dear john ,"
Doesn't need to get fixed everywhere. So I've particularly fixed for rendered email template
Fixes #167
2025-11-21 00:03:19 +05:30
Abhinav Raut
dc14e80560
Fix media URLs not updating when root URL changes in settings
2025-11-09 21:08:59 +05:30
Abhinav Raut
7469e296d2
fix: allow message processing to continue on thumbnail generation errors
2025-09-17 12:51:56 +05:30
Abhinav Raut
44ffc77c4e
log conversation deletion
2025-09-17 02:47:06 +05:30
Abhinav Raut
3ec061d8f1
fix: improve error handling for message attachment uploads delete newly created conversation if media upload fails so this message is tried again
2025-09-17 02:42:07 +05:30
Abhinav Raut
6231a9e131
update logger to log time value instead of null time
2025-09-16 23:15:09 +05:30
Abhinav Raut
d63302843b
Refactor: assigned user removal when changing assigned team
2025-09-16 21:31:53 +05:30
Abhinav Raut
a652f380b2
fix: set default content type to text if empty
...
Ref #137
2025-09-16 21:10:20 +05:30
Abhinav Raut
71865e389e
fix: Change id type to int in ConversationParticipant
...
- hide Total field in UserCompact JSON
2025-09-15 01:01:51 +05:30
Abhinav Raut
6f300bb073
Fix: Contact form displays countries with the same calling code incorrectly.
...
For example, when a user selects the USA, the form also shows Canada, as both share the +1 calling code.
Rename column from `phone_number_calling_code` to `phone_number_country_code`.
Feat: Show the calling code alongside the country flag in the contact form for the selected country. Previously, only the flag was displayed.
2025-09-14 19:36:30 +05:30
Abhinav Raut
210b8bb53b
feat: add support for sending messages as contact
...
- introduce new permission `messages:write_as_contact` that needs to be set to allow this.
2025-09-13 20:55:04 +05:30
Abhinav Raut
a0e1ccf117
clear assigned user ID and last seen timestamp when updating conversation assigned team
2025-09-11 22:09:06 +05:30
Abhinav Raut
b15413b7ca
Add support for filter conversations from views using tags assigned.
...
Add multi select support to FilterBuilder component.
Ref #124
2025-09-10 03:02:55 +05:30
Abhinav Raut
bece58bdec
fix[automation] respect case sensitive flag for contains and not contains operator
...
- test cases for automation evaluator
2025-09-02 02:31:08 +05:30
Abhinav Raut
98492a1869
refactor: use team compact struct for user teams list
...
- Check for existing email before agent update and raise proper error
2025-09-02 02:00:35 +05:30
Abhinav Raut
3f7d151d33
- add getting started flow for new users
...
- Translate web template pass i18n dependency
- Fix colors in menu card
- Show update description if avaialble in AppUpdate component
- Remvoe i18n from settings as i18n and settings depend on each other to load initial lang.
- Clear inbox password as the update SQL query now returns the config.
- Fetch agents and inboxes from the store instead of directly fetching using axios instance.
2025-08-30 21:30:24 +05:30
Abhinav Raut
f6d3bd543f
refactor: consolidate public config into single endpoint, move settings behind auth
...
- remove OIDC enabled endpoint
2025-08-30 18:46:37 +05:30
Abhinav Raut
c1c14f7f54
refactor: split converstion list item and conversation into different structs
...
- Add missing columns in message queries
2025-08-29 00:15:22 +05:30
Abhinav Raut
634fc66e9f
Translate welcome to libredesk email subject
...
- Update all SQL queries to add missing columns
- Update the create conversation API to allow setting the initiator of a conversation. For example, we might want to use this API to create a conversation on behalf of a customer, with the first message coming from the customer instead of the agent. This param allows this.
- Minor refactors and clean up
- Tidy go.mod
- Rename structs to reflect purpose
- Create focus structs for scanning JSON payloads for clarity.
2025-08-28 00:34:56 +05:30
Abhinav Raut
550a3fa801
fix: update Message-ID determination logic to prefer IMAP-parsed IDs over raw headers
2025-08-20 04:26:23 +05:30
Abhinav Raut
6bbfbe8cf6
add test cases for imap msg id parsing
2025-08-20 04:18:37 +05:30
Abhinav Raut
f9ed326d72
fix: handle message empty message ids in imap
2025-08-20 03:29:16 +05:30
Abhinav Raut
69accaebef
fix: conversations not reopening on reply from contacts (only when there's an attachment in the reply) else the convo would reopen, the conversation_uuid field was empty as it wasn't part of the get-messages query.
2025-08-14 16:11:27 +05:30
Abhinav Raut
389c4e3dd3
fix: allow configurable webhook request timeout from config.toml
2025-07-07 00:26:31 +05:30
Abhinav Raut
9a119e6dc3
change log level from Warn to Info for zero rules
2025-07-07 00:18:33 +05:30
Abhinav Raut
ccc5940dd9
return created message in message fetch API
2025-07-06 19:51:44 +05:30
Abhinav Raut
d2e5d85e3a
fix: return created/updated objects in POST/PUT responses with masked secrets
...
All POST/PUT handlers now return actual database objects instead of `true`
2025-06-20 19:35:09 +05:30
Abhinav Raut
9132e11458
refactor return envelope errors from handlers
2025-06-19 00:14:35 +05:30
Abhinav Raut
1b2a5e4f36
feat: standardize API requests to use JSON instead of form data
2025-06-18 01:30:38 +05:30
Abhinav Raut
c37258fccb
feat: API key management for agents, api keys can now be generated for any agent in libredesk allowing programmatic access.
...
- Added endpoints to generate and revoke API keys for agents.
- Updated user model to include API key fields.
- Update authentication middleware to support API key validation.
- Modified database schema to accommodate API key fields.
- Updated frontend to manage API keys, including generation and revocation.
- Added localization strings for API key related messages.
2025-06-16 23:45:00 +05:30
Abhinav Raut
88d719ec4f
fix remove unncessary indexes on webhooks table
2025-06-15 13:10:19 +05:30
Abhinav Raut
147180a536
remove unused headers column from webhooks table
2025-06-15 13:05:14 +05:30
Abhinav Raut
faa195f0a6
fix typo in prepared query
2025-06-15 12:43:28 +05:30
Abhinav Raut
4b0422d904
Reduce duplicate database conversation fetches by adding a new method EvaluateConversationUpdateRulesByID that accepts only a conversation ID instead of a conversation object, allowing the caller to control the behavior since the caller might already have the conversation object or might want a fresh fetch.
...
- Return early if user / team is already assigned to a conversation
- rename query get-pending-messages to get-outgoing-pending-messages to reflect purpose.
2025-06-15 12:43:01 +05:30
Abhinav Raut
27aac88f53
update webhook payloads, send reduced payloads showing what changed instead of entire objects
2025-06-14 21:51:11 +05:30
Abhinav Raut
cb6b0e420b
adds missing colunms from select query were missing for webhook events
2025-06-14 21:49:31 +05:30
Abhinav Raut
e004afd7d1
fix: remove unused email fields from Conversation model
2025-06-14 21:49:01 +05:30
Abhinav Raut
6a77d346dc
feat: add version package to hold application version for build time configuration
2025-06-14 21:48:55 +05:30
Abhinav Raut
60c89cb617
use http client with set timeout for webhook requests
...
remove db calls from `TriggerEvent`
2025-06-14 21:48:46 +05:30
Abhinav Raut
b7d4b187e8
fix: adds missing conversation update rule evaluation missing for event EventConversationTeamAssigned
...
refactor code
2025-06-14 19:55:24 +05:30
Abhinav Raut
2bf45f32de
fix: remove headers field from webhook model and related queries
2025-06-14 15:03:11 +05:30
Abhinav Raut
981372ab86
wip webhooks
2025-06-13 02:17:00 +05:30
Abhinav Raut
03b932c1c0
fix: handle empty inbox email address in fetchAndProcessMessages
2025-06-08 12:17:58 +05:30
Abhinav Raut
012de059e7
fix: remove conflicting constraints on NOT NULL columns in applied_slas and csat_responses tables, update constraints for csat_responses and applied_slas tables to cascade deletes instead
2025-06-08 11:50:22 +05:30
Abhinav Raut
53d5715429
fix: implement loop prevention header in emails
...
#Ref 90
2025-06-08 02:22:36 +05:30
Abhinav Raut
e567acbe59
fix(sql): overview report for days = 0 i.e. todays data
2025-06-08 01:24:01 +05:30
Abhinav Raut
57d0e90b5f
refactors(i18n-keys): use correct keys in vue and go errors
...
- fix: invalidate agent cache on update / create
2025-06-08 00:59:15 +05:30
Abhinav Raut
d95a5f40cf
feat: add agent cache in user package
...
- use cached agent in all middlewares
- fix: race in casbin that gave permission denied error.
- stop loading permissions into casbin on every `Enforce` function call instead cache user permissions in authz package and when permissions change only the load permission as policies atomically.
- sort permissions in get-agents to make the permissions slice comparsion using slices.Equal work
2025-06-07 23:43:21 +05:30
Abhinav Raut
ade833fb7b
fix: waiting_since timestamp being set to null on a non-outgoing message.
...
- Set to null only after outgoing message is sent
- change imap log from debug to info
2025-06-07 19:57:28 +05:30
Abhinav Raut
625a08d0aa
feat(conversation): add support for nested websocket property updates and broadcast changes for all contact and custom attributes
2025-06-07 18:58:17 +05:30