Commit Graph

80 Commits

Author SHA1 Message Date
Abhinav Raut d25dcd1673 fix UI consistency and simplify the design guide 2026-10-18 18:52:26 +05:30
Abhinav Raut 986329bea6 fix conversation tag spacing and align list indicators 2026-10-18 17:51:19 +05:30
Abhinav Raut b29d29f0c9 refine conversation layouts and Juno interactions
Keep conversation metadata compact and simplify sidebar attribute editing.
Update Juno visuals and prompts, presence icons, and SLA duration formatting.
2026-10-16 02:10:01 +05:30
Abhinav Raut 07ec17369d align app layouts and refine conversation controls
Use shared headings and consistent field widths across the dashboard. Load older messages on scroll and prevent unread badges from flashing after sending messages.
2026-10-15 11:35:46 +05:30
Abhinav Raut 883705d4d8 fix sidebar state and refine table and toast controls
Preserve the sidebar preference after search navigation and layout changes.
Show unsorted icons on hover or focus. Move toast close buttons right and apply theme colors.
2026-10-15 00:11:17 +05:30
Abhinav Raut 5379473b65 fix panel resizing and style avatar fallbacks
Let the main panels fill the remaining space to avoid layout warnings.
Save the conversation sidebar width in pixels to keep both dividers independent.

Use explicit transition timing for emoji pickers to remove Tailwind warnings.

Center avatar initials on a subtle theme gradient.
2026-10-14 23:53:59 +05:30
Abhinav Raut f87d99f452 polish app layouts and fix UI regressions
Use available admin space and make forms adapt to screen width.
Preserve reply edits during resizing and improve widget feedback.
2026-10-12 00:34:18 +05:30
Abhinav Raut 00064990f3 adjust citation links and typing bubble height 2026-10-10 21:47:28 +05:30
Abhinav Raut b04590929c improve widget citations and typing dots 2026-10-10 21:37:03 +05:30
Abhinav Raut bfcdcc0dbe tune animations across the app and widget 2026-10-04 22:37:14 +05:30
Abhinav Raut 3001a7a6e0 merge main into feat-whatsapp 2026-09-24 01:28:52 +05:30
Abhinav Raut 5067eb256a keep focus in the tag picker after each pick 2026-09-24 00:25:03 +05:30
Abhinav Raut f07efc0dec close the phone sidebar when opening the view form 2026-09-23 23:42:23 +05:30
Abhinav Raut 21be970951 show the desktop layout from 1024px and fix phone layout bugs 2026-09-23 23:34:43 +05:30
Abhinav Raut d2e2bcc3b6 Merge remote-tracking branch 'origin/main' into feat-whatsapp 2026-09-23 10:08:30 +05:30
Abhinav Raut 717dfe96a3 Merge remote-tracking branch 'origin/main' into mobile-improvements 2026-09-23 04:05:09 +05:30
Abhinav Raut 718c00534f fix live chat review findings and tests 2026-09-23 03:43:33 +05:30
Abhinav Raut 1a422a5e63 use shadcn buttons and labels instead of hand-styled raw elements 2026-09-23 02:40:32 +05:30
Abhinav Raut 374cd26e4a improve live chat widget settings and branding
Reduce the inbox form to five grouped tabs and add a responsive live preview.
Add separate light and dark branding with system theme support.
Add launcher size and logo scale controls. Ref #627
Fix realtime message ordering in the agent dashboard. Fixes #626
2026-09-22 01:29:25 +05:30
Abhinav Raut 01874c2e92 keep the tag list open so multiple tags can be picked in one go 2026-09-21 17:47:06 +05:30
Abhinav Raut f9564faeaf move typing bubble style into TypingIndicator 2026-09-20 19:58:10 +05:30
Abhinav Raut 08e6801fc4 polish widget UI and fix proactive message delete
Widget:
- home background stays pinned while the content scrolls, fade sits on it
- one radius and shadow scale across cards, buttons and inputs
- live search in the help tab with a "no results" state
- attachment-only messages show "Image" in the conversation preview
- launcher and panel use the same shadows as the header

Admin:
- preview column is a fixed width so zoom does not resize it, hidden on small screens
- preview matches the real widget again
- search spinner replaces the magnifier instead of covering the page

Fixes:
- deleting a proactive message did nothing, the dialog cleared the pending
  id before the handler read it
- an inbox created through the API could not be saved from the form, it
  jumped to the pre-chat tab with no error

Adds livechatWidgetTabs.cy.js covering the proactive message and help
center tabs.
2026-09-20 18:48:51 +05:30
Abhinav Raut b290031089 Merge remote-tracking branch 'origin/main' into libredesk-widget-improvements 2026-09-19 03:58:41 +05:30
Abhinav Raut 7c9fac4f4a show idle agents as online instead of away
Idle agents still get auto-assigned tickets. Only the manual away
statuses skip them. The amber away dot made other agents think the
idle person would not get tickets. The agent picker, widget header
and the agents report now treat idle as online.
2026-09-19 02:26:37 +05:30
Abhinav Raut 0ee2e9e86b merge main 2026-09-19 01:39:24 +05:30
Abhinav Raut 00c758f894 Merge pull request #620 from abhinavxd/feature/agent-ai-tools
Custom AI tools to copilot and generate reply with human approval
2026-09-19 01:37:11 +05:30
Abhinav Raut 8d99740a41 add custom AI tools to copilot and generate reply with an agent approval step 2026-09-18 20:19:52 +05:30
Abhinav Raut 7d77754b52 improve live chat widget flows
Expand widget conversations with audience-specific forms, AI handoffs, message previews, and help article translations. Keep existing inbox settings compatible and reject invalid live chat configuration.
2026-09-18 16:09:15 +05:30
Abhinav Raut 11012795b2 fix mobile layouts 2026-09-18 13:36:17 +05:30
Abhinav Raut ccba084d4b Merge remote-tracking branch 'origin/main' into libredesk-widget-improvements 2026-09-18 02:54:09 +05:30
Abhinav Raut 88daac8a8d improve search filters and results 2026-09-18 00:41:37 +05:30
Abhinav Raut 46c3e42266 add WhatsApp template editing and handle Meta failures
Keep local templates unchanged when Meta rejects edits or deletions. Block unsupported template sends and add regression tests for template actions and form controls.
2026-09-17 14:33:33 +05:30
Abhinav Raut 89f58904d2 wip: add widget campaigns, help center in widget and transcript download 2026-09-16 02:11:44 +05:30
Abhinav Raut a870722c53 use ladders for priority market 2026-09-14 18:35:55 +05:30
Abhinav Raut 9c0d242549 rebuild the command palette and add keyboard shortcuts for conversation actions 2026-09-02 15:44:27 +05:30
Abhinav Raut e62967b804 isolate remote picker searches 2026-08-28 02:55:15 +05:30
Abhinav Raut e2ca7c7e5f avoid stale lookup results 2026-08-28 02:19:57 +05:30
Abhinav Raut 18514cd021 search and paginate agents, teams, tags and macros instead of loading them all at boot 2026-08-28 01:43:59 +05:30
Abhinav Raut 9106ea1fda fix composer closing on a blocked send, note keyboard focus, and sheet close target
The fullscreen composer closed itself before the send checks ran, so a
blocked send (empty To, missing tags, contact email not in recipients)
collapsed the editor on a phone even though nothing was sent. The close
now happens after all the guards.

The hover rewrite dropped focus-within from the private note delete menu,
so it could not be reached by keyboard on desktop. Put it back.

The mobile contact sheet hides its own close button, so the collapse icon
was the only way out at 28px. It is 44px below md now and stays 28px above.

Also dropped `overflow-wrap: break-all` from .message-bubble. break-all is
not a valid overflow-wrap value, so that line never did anything.

The rest is comment cleanup and switching `../..` imports to `@main` in the
files already being touched.
2026-08-17 16:06:38 +05:30
pat-s 0e8760af7d Merge branch 'main' into pr/mobile-dashboard
Resolve the index.html conflict by keeping the responsive viewport meta
from this branch and the noindex robots meta added on main.
2026-08-17 08:19:09 +00:00
Abhinav Raut f9fcba880a polish mobile layout and touch targets
Bumps taps to 44px across the sidebar, reply box, conversation header and
data tables, adds a `can-hover` Tailwind variant so hover-gated controls
work on touch, and makes the reports page stack on narrow screens.
2026-08-17 13:42:45 +05:30
Abhinav Raut 5c6f44378e fix timezone country mappings, phone error overlap and welcome workflow 2026-08-17 13:18:36 +05:30
Abhinav Raut 911fbe5b7b detect phone country from browser timezone in the pre-chat form
The country code was guessed from navigator.language, which is the UI
language and often has no region, so most visitors got US. It now reads
the browser timezone first and falls back to language, then US.
2026-08-17 13:10:45 +05:30
pat-s 3620ae0313 fix(ui): make dialogs fit a narrow viewport
`DialogContent` and `AlertDialogContent` are `w-full max-w-lg` with no side
inset, no max height and no vertical scrolling, and `sm:rounded-lg` only
applies from 640px. In a window narrower than that they render edge to
edge with square corners, and cannot be scrolled when taller than the
viewport.

Add a 1rem side inset, `max-h-[calc(100dvh-2rem)]` with `overflow-y-auto`,
and make the radius unconditional. At 640px and above `max-w-lg` still
governs the width, so nothing changes there.

Fixing the two primitives covers all 17 dialog call sites.
2026-08-16 23:20:02 +05:30
Abhinav Raut 6f2f046910 Merge remote-tracking branch 'origin/main' into help-center 2026-08-08 00:01:50 +05:30
chahat-101 d180bfbedc Merge remote-tracking branch 'upstream/main' into network-status-banner 2026-08-07 20:57:38 +05:30
pat-s ebce66a928 feat: mobile support for the agent dashboard
Lets an agent triage and reply to conversations from a phone. Admin and
reports are deliberately untouched, per the discussion in #470.

`apps/main/index.html` pinned `width=1280, initial-scale=0.29`, which makes
a phone lay the page out at 1280 CSS pixels and scale the document to 29
percent. Switching it to `width=device-width` requires the layout to cope
with a real viewport:

- Add `useIsMobile`, using `max-width: 767px` so it is the exact complement
  of Tailwind's `md:`. Align the sidebar primitive's own query to match; at
  exactly 768px it previously reported mobile while `md:` already applied.
- Fold the 3rem icon rail into the drawer. The mobile `Sheet` in
  `ui/sidebar/Sidebar.vue` was already implemented but unreachable, since
  the layout viewport could never match its media query. The rail is
  `collapsible="none"`, which returns before the Sheet branch, so its
  destinations move into the one drawer rather than nesting a second.
- Render the inbox one pane at a time below `md`. Both `ResizablePanelGroup`
  minimums are percentages of the window, giving a ~205px thread beside a
  ~117px contact sidebar at 390px, which no class change can fix. The
  routes are already nested, so list-to-detail is push navigation with a
  back affordance; only the desktop branch reads the persisted panel sizes.
- Show the contact sidebar as a `Sheet`. It has no intrinsic width, being
  sized entirely by its panel, and `collapse()`/`expand()` are splitter
  specific, so this is a parallel path off the same emitter event.
- Collapse the composer to a tap target that opens the existing fullscreen
  editor, and make that dialog full-bleed below `sm`; its `max-w-[60%]`
  gave a 234px modal at 390px. Inline it takes ~280px, which with a soft
  keyboard raised leaves the thread nothing.
- Widen message bubbles and trim the hardcoded 47px gutters on phones, and
  use `overflow-wrap: break-word` so ordinary words stop splitting
  mid-character. Reveal the private-note menu on touch via
  `[@media(hover:hover)]`.
- Remove `SmallScreenOverlay`, whose tuned `scale(3)` existed only to
  cancel out the old `initial-scale`.

Desktop is unchanged, verified by screenshot comparison at 1440px.
2026-08-06 06:41:27 +00:00
chahat-101 ee45e87d6b show connection status banner to agents 2026-07-26 00:37:52 +05:30
Abhinav Raut baff30fc28 add help center with public pages, admin management and AI article indexing
Agents can now publish a public knowledge base per help center.

Backend:
- new internal/helpcenter package for help centers, collections and articles
- admin JSON API behind a new help_center:manage permission
- public /hc/{slug} pages, JSON API, search and sitemap, all rate limited
- migration v2.7.0 for the new tables

AI:
- published articles with the AI flag on get embedded, so the agent answers
  from them. Unpublishing or clearing the flag removes the embeddings.

Media:
- media rows now carry a private flag. Help article images are public so the
  public pages can serve them without auth, and only agents with
  help_center:manage can upload them.

Frontend:
- admin help center list, tree view and article editor
- the old TextEditor is split into ArticleEditor and ConversationEditor over a
  shared useTextEditor composable, so article-only tools like callouts,
  collapsibles and YouTube embeds stay out of the reply box
2026-07-25 14:19:38 +05:30
Abhinav Raut d8b73c5877 retheme UI to the green palette and fix form and search bugs
Colors: the brand color moves from indigo to green in both themes, and the
sidebar, tooltip, card and link styles follow it. Three new tokens replace
hardcoded values: foreground-lighter for idle sidebar items, warning-600 for
warning text that needs 4.5:1 contrast on light backgrounds, and link for
anchors inside rendered email content. DESIGN_SYSTEM.md now lists the real
values from main.scss instead of the old indigo ones.

Forms: every button inside a form that is not the submit button now has an
explicit type. Without it the browser treats it as a submit button, so
clicking Cancel on a contact note posted an empty note, "New holiday" saved
the whole business-hours form, and pressing Enter in an SLA field deleted the
first alert row. The login page also highlights an empty password field on a
failed submit, which a broken condition prevented before, and the two
password fields on the set-password page get their own show and hide toggles.

Search: conversation and contact search now drop responses from an older
query, so clearing the box no longer repopulates the list with stale results.

Permissions: /api/v1/ai/summarize now needs messages:write, since it writes a
private note, and the menu item is hidden for agents without it.
2026-07-25 00:49:26 +05:30