Skip to main content
Drupal is a registered trademark of Dries Buytaert
Release: Sodium 3.0.2 Minor update available for module sodium (3.0.2). Release: Educare theme 1.0.1 Minor update available for theme vartheme_bs5_educare (1.0.1). Release: Vartheme Bs5 5.0.3 Minor update available for theme vartheme_bs5 (5.0.3). Release: Snipper 1.0.4 Minor update available for module snipper (1.0.4). Release: X-Frame-Options Allow-From webvisor.com 2.0.2 Minor update available for module xframe_allow_webvisor (2.0.2). Release: Swagger UI Info 2.0.2 Minor update available for module swagger_ui_info (2.0.2). Release: Contact Mail 2.0.4 Minor update available for module contact_mail (2.0.4). Release: Varbase Webform Base 1.0.1 Minor update available for module varbase_webform_base (1.0.1). Usage Milestone: Term CSV Export Import Module term_csv_export_import crossed 1,000 active installs. Module Revived: Year/Month Widget 1.1.3 Module year_month_widget updated after 9 months of inactivity (1.1.3).

Modern Chat

No security coverage
View on drupal.org

Modern Chat provides a contemporary interface for Drupal AI Assistants, improving upon older designs. It utilizes the same API as other AI tools but offers a more visually appealing and user-friendly experience. The module can be integrated in various ways, including as an inline block, a floating widget, a docked sidebar, or a full-page dedicated chat experience, with each instance configurable to its specific assistant and appearance.

A modern chat interface for Drupal AI Assistants, built with the shadcn UI components.

The current Drupal solutions looks and behave like Yahoo messenger back in 1998, nothing bad but quite nostalgic.

It talks to the same ai_assistant_api engine the rest of the AI ecosystem uses, and it does not require or conflict with ai_chatbot. The two can be installed side by side if you have any issues with good looking UIs.

Four surfaces, one block plugin plus one route

Surface How Inline Place the Modern Chat block, placement Inline. Floating widget Same block, placement Bottom right / Bottom left. Docked sidebar Same block, placement Docked sidebar. Full page Visit /ai-chat/{assistant_id}.

 

Four states, designed instead of hidden

The states a chat actually spends its time in thinking, streaming, failing, resuming tend to arrive undesigned, which is how they end up as a spinner. These four got designed:

  • Agent and tool steps. While the agent works, one plain-language status line says what is happening "Searching…", "Making changes…" and disappears when the answer lands. Tool plugin names are never shown: a visitor does not need to read RAG/Vector Search in a support chat, any more than ChatGPT announces which function it just called. Rounds where the agent is only talking to itself pass silently, because that is a log entry, not a UI event.
  • Streaming. Replies render as they arrive with the question anchored in place, so the thread does not slide out from under the sentence you were reading. New words cascade in with a short staggered fade; only newly appended text ever animates, so what you already read never flickers. A reply that arrives whole gets the same reveal instead of popping in. The thinking status materialises with a slight rise and blur (ease-out, no bounce). prefers-reduced-motion drops the rise, blur and stagger and keeps a plain quick fade.
  • Errors. Rate limit, quota, bad request, setup failure and transport failure are told apart, worded per assistant, and retryable only where retrying can actually help. A retry button on a missing API key is just a lie with rounded corners.
  • History and reset. A stored conversation is restored on load without a scroll jump. Clear conversation starts a new thread.

Settings & Features

Everything is set per block, so one site can run a support widget in the footer, an editorial sidebar in the admin theme and a full-page assistant, each with its own name, face and opening lines.

Setting What you get AI Assistant Pick one of your existing assistants. That is the whole setup step. Placement Inline in a region, floating widget bottom right or bottom left, or a docked full-height sidebar. Same block, four different products. Assistant name Shown in the header. Defaults to the assistant's own label. Avatar Any image URL, tokens supported. Skip it and you get a clean initial instead. Colour scheme Light, dark, or follow the visitor's system setting. Per block, so your dark admin theme stays out of the public widget. Height and sidebar width Any CSS length. It fits phones without being asked twice. Launcher label "Chat with us" beside the button, or icon only. Open on first visit Greet people with it open. Closed stays closed after that, the visitor's choice wins. Greeting A welcome message before the first question. Markdown, and it costs you no tokens. Suggested questions One per line, shown as buttons. A real empty state instead of a blank box. Input placeholder Your words in the composer.

Access is one permission, Use Modern Chat and core block visibility handles where it shows up. Each assistant still enforces its own role restrictions.

And a few things are deliberately not settings: tool names never leak to visitors, errors are always worded like a human wrote them, and motion always respects reduce motion. Those are not preferences, they are the point.

 

 

Depends on

Dependencies of the latest stable release

No dependencies recorded for this project.

Required by

Tracked projects that depend on this one

No tracked projects depend on this one yet.

Activity

Tracked releases
1
Tracked since
Jul 2026
Latest release
1 month ago
Releases (12 mo)
1 ▲ from 0
Maintenance
Active

Releases

Version Type Core Release date
1.0.x-dev Dev 10–11 Jul 30, 2026