egerong
1e257fe57f
Enable setting redis config via url
2025-12-14 13:42:20 +02:00
Abhinav Raut
59dd3dcda7
fix: make conversation last seen timestamp and unread counts per agent, right now its global.
...
adds new table `conversation_last_seen`
Migrations for v0.8.5
Remove col `assignee_last_seen_at` from schema
2025-12-13 01:22:59 +05:30
egerong
2c175a6d96
Add support for setting redis user
2025-12-11 18:02:34 +02:00
Abhinav Raut
1f3ba077e9
Fix: New conversation creation should assign the team first, then the agent, since assigning the team later clears the agent assignment.
2025-12-10 01:09:35 +05:30
egerong
4a0c57c2e2
Use double underscore for delimiter
2025-11-30 21:08:13 +02:00
egerong
3bc98bfd15
Implement parsing configuration from environment variables
2025-11-30 16:32:31 +02:00
Abhinav Raut
2331a2c970
add validation for empty file uploads with appropriate error message
2025-11-26 15:25:59 +05:30
Abhinav Raut
a7ec336853
Update cmd/media.go
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-11-25 17:18:05 +05:30
Abhinav Raut
f516bbfa12
fix: improve MIME type detection and content disposition handling for media uploads for s3 store.
2025-11-25 16:06:36 +05:30
Abhinav Raut
3ba93d8dd6
fix: redirect to next query param after login not working
...
fixes #169
2025-11-21 01:00:43 +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
b8da96c1d1
fix: set Content-Disposition header for media served from filesystem
...
set inline for videos, images and pdfs and attachment for rest
2025-11-03 13:11:27 +05:30
Abhinav Raut
a4a9a9ccd3
trim feedback length to 1000 chars
2025-09-15 23:29:57 +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
007c332a7d
remove font-medium from data table columns in all data tables
...
- Remove permissions requirement for GET on roles
2025-09-09 23:22: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
12ebe32ba3
return complete contact note by refetching it using GetNote
2025-09-02 00:32:29 +05:30
Abhinav Raut
3ce3c5e0ee
store public config in pinia store
2025-09-01 03:20:09 +05:30
Abhinav Raut
9ec96be959
rename AppUpdate component with AdminBanner
...
- show banner when app restart is required.
- UI changes to admin banner
2025-08-31 20:08:38 +05:30
Abhinav Raut
7d4e7e68c3
update user avatar upload function to accept user by value and improve error logging by logging the user id
2025-08-31 18:48:02 +05:30
Abhinav Raut
5b941fd993
Apply suggestion from @Copilot
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-08-31 18:37:05 +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
a516773b14
feat: add i18n support to web templates
...
- Add i18n object to template funcMap for direct access
- Translate all hardcoded strings in CSAT and footer templates
- Add reusable translation keys to globals.messages
2025-08-30 19:35:00 +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
0dec822c1c
fix panic due to missing i18n dependency
2025-08-26 01:12:30 +05:30
Abhinav Raut
e0dc0285a4
fix: agents availability status changing to online after doing an email password login even after being Away or in Reassinging Replies status.
...
This was not affecting OIDC login just email password login
2025-08-19 16:34:15 +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
6bb5728665
check csrf only for state-changing methods
2025-06-19 01:53:19 +05:30
Abhinav Raut
9132e11458
refactor return envelope errors from handlers
2025-06-19 00:14:35 +05:30
Abhinav Raut
e70f92d377
remove validation tags from loginRequest struct
2025-06-18 23:58:07 +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
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
981372ab86
wip webhooks
2025-06-13 02:17:00 +05:30
Abhinav Raut
bc71fcfdc1
fix: add fallback for config typo in message outgoing scan interval key
2025-06-08 14:55:23 +05:30
Abhinav Raut
6487bf9a0a
fix: validate and normalize email input in agent creation and update
2025-06-08 10:41:05 +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
5a0e3a8072
refactor: remove unncessary oidc test handler
2025-06-08 00:51:09 +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
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
Abhinav Raut
d532a99771
feat: new package report, move exisiting report code from conversations pkg to report package
...
- new sla performance overview cards.
2025-06-06 02:07:19 +05:30
Abhinav Raut
f6e2fc1956
feat: allow sending attachments in new conversations
...
- replace existing combobox selects with common component selectcombobox.vue
2025-06-03 04:03:16 +05:30
Abhinav Raut
506bb91e20
fix: make sla metric timestamps nullable
2025-05-26 03:48:41 +05:30
Abhinav Raut
a84ed1ed32
Allow setting any value for SLA delay duration, replace select with input text
...
Validations to delay duration
2025-05-26 03:48:41 +05:30
Abhinav Raut
7426a09478
feat: allow setting metric per SLA notification, so admins can set SLA alert per metric or just set to all if they want a notification to be sent for all metrics
...
- Make sla time fields (first response, next response, resolution) optional, only 1 field is required.
2025-05-26 03:48:41 +05:30