Hotspot GitLab Duo Chat during Trial

What does this MR do and why?

Full experiment context is in https://gitlab.com/groups/gitlab-org/-/epics/18106

Test adding a hotspot element to GitLab Duo Chat button in the top navigation for net new trial (Ultimate + GItLab Duo Enterprise) signups.

References

Screenshots or screen recordings

control candidate
Screenshot_2025-07-08_at_16.28.21 Screenshot_2025-07-08_at_16.28.48
Screen Recording
Screen_Recording_2025-07-08_at_16.34.29

How to set up and validate locally

bin/rails c

Feature.enable(:hotspot_duo_chat_during_trial)
Patch
diff --git a/app/views/layouts/nav/_top_bar.html.haml b/app/views/layouts/nav/_top_bar.html.haml
index c833bf01704c..a6400cddb193 100644
--- a/app/views/layouts/nav/_top_bar.html.haml
+++ b/app/views/layouts/nav/_top_bar.html.haml
@@ -5,6 +5,6 @@
     .gl-grow.gl-basis-0.gl-flex.gl-items-center.gl-justify-start.gl-gap-3
       = render Pajamas::ButtonComponent.new(icon: 'sidebar', category: :tertiary, button_options: { class: 'js-super-sidebar-toggle-expand super-sidebar-toggle -gl-ml-3', aria: { controls: 'super-sidebar', expanded: 'false', label: _('Primary navigation sidebar') } })
       = render "layouts/nav/breadcrumbs/breadcrumbs"
-    - if duo_button_enabled
+    - if true
       .gl-flex-none.gl-flex.gl-items-center.gl-justify-center.gl-gap-3
         = render "layouts/nav/ask_duo_button"
diff --git a/ee/app/views/layouts/_tanuki_bot_chat.html.haml b/ee/app/views/layouts/_tanuki_bot_chat.html.haml
index b9d81cde556e..02dd3527803f 100644
--- a/ee/app/views/layouts/_tanuki_bot_chat.html.haml
+++ b/ee/app/views/layouts/_tanuki_bot_chat.html.haml
@@ -1,4 +1,4 @@
-- return unless ::Gitlab::Llm::TanukiBot.enabled_for?(user: current_user, container: nil)
+/ - return unless ::Gitlab::Llm::TanukiBot.enabled_for?(user: current_user, container: nil)
 - resource_id = Gitlab::Llm::TanukiBot.resource_id
 - project_id = Gitlab::Llm::TanukiBot.project_id
 - root_namespace_id = Gitlab::Llm::TanukiBot.root_namespace_id
diff --git a/ee/app/views/layouts/nav/_ask_duo_button.html.haml b/ee/app/views/layouts/nav/_ask_duo_button.html.haml
index a4391c8d47fb..166998f26b76 100644
--- a/ee/app/views/layouts/nav/_ask_duo_button.html.haml
+++ b/ee/app/views/layouts/nav/_ask_duo_button.html.haml
@@ -12,7 +12,7 @@
     size: 'medium',
     button_options: { class: 'enabled-button js-duo-agentic-chat-toggle', aria: { label: duo_agentic_chat }})
 
-- if chat_disabled_reason.present?
+- if false
   - translated_project = s_('DuoChat|project')
   - translated_group = s_('DuoChat|group')
   - translated_reason = chat_disabled_reason == 'project' ? translated_project : translated_group

550757.patch

  • Reload the page.
  • Hover the hotspot.
  • Click the hotspot.
  • Click Ask GitLab Duo.
  • Make sure tracking events are generated.

Tracking

Variant Activity action label
Control and Candidate Click on GitLab Duo Chat click_button tanuki_bot_breadcrumbs_button
Candidate Hotspot is rendered render_ask_gitlab_duo_hotspot -
Candidate Click on Hotspot Element click_ask_gitlab_duo_hotspot -
Control and Candidate Popover is rendered render_duo_chat_callout -
Control and Candidate Click on Ask GitLab Duo in GitLab Duo Chat popover click_ask_gitlab_duo -
Control and Candidate Click on x in GitLab Duo Chat popover dismiss_duo_chat_callout -

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Related to #550757

Edited by Serhii Yarynovskyi

Merge request reports

Loading