@gitlab/duo-ui 14.3.0 → 15.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ # [15.0.0](https://gitlab.com/gitlab-org/duo-ui/compare/v14.3.0...v15.0.0) (2025-11-21)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **DuoChat:** Remove new chat button ([5e9944f](https://gitlab.com/gitlab-org/duo-ui/commit/5e9944f5dfbb6963f27152636c727908bf0228d8))
7
+
8
+
9
+ ### BREAKING CHANGES
10
+
11
+ * **DuoChat:** Removes New Chat button for web header as the
12
+ button is now toggles from the navigation siderail
13
+
1
14
  # [14.3.0](https://gitlab.com/gitlab-org/duo-ui/compare/v14.2.0...v14.3.0) (2025-11-20)
2
15
 
3
16
 
@@ -1,14 +1,11 @@
1
1
  import Vue from 'vue';
2
2
  import { GlToast, GlAlert, GlAvatar, GlButton, GlDisclosureDropdown, GlSafeHtmlDirective, GlTooltipDirective } from '@gitlab/ui';
3
3
  import { translate, sprintf } from '../../../../utils/i18n';
4
- import DuoChatHeaderAgentItem from './duo_chat_header_agent_item/duo_chat_header_agent_item';
5
4
  import { VIEW_TYPES } from './constants';
6
5
  import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
7
6
 
8
7
  const i18n = {
9
8
  CHAT_CLOSE_LABEL: translate('WebDuoChat.closeChatHeaderLabel', 'Close chat'),
10
- CHAT_NEW_LABEL: translate('WebDuoChat.chatNewLabel', 'New chat'),
11
- CHAT_NEW_TOOLTIP: translate('WebDuoChat.chatNewToolTip', 'New chat'),
12
9
  CHAT_BACK_TO_CHAT_TOOLTIP: translate('WebDuoChat.chatBackToChatToolTip', 'Back to chat'),
13
10
  CHAT_TITLE: translate('WebDuoChat.chatTitle', 'GitLab Duo Chat'),
14
11
  CHAT_DROPDOWN_MORE_OPTIONS: translate('WebDuoChat.chatDropdownMoreOptions', 'More options'),
@@ -23,8 +20,7 @@ var script = {
23
20
  GlAlert,
24
21
  GlAvatar,
25
22
  GlButton,
26
- GlDisclosureDropdown,
27
- DuoChatHeaderAgentItem
23
+ GlDisclosureDropdown
28
24
  },
29
25
  directives: {
30
26
  SafeHtml: GlSafeHtmlDirective,
@@ -158,11 +154,7 @@ var script = {
158
154
  const __vue_script__ = script;
159
155
 
160
156
  /* template */
161
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:"gl-shrink-0 gl-p-0",attrs:{"data-testid":"chat-header"}},[(!_vm.showStudioHeader)?_c('div',{staticClass:"gl-flex gl-w-full gl-items-center gl-px-4 gl-py-3",attrs:{"data-testid":"chat-top-header"}},[(_vm.subtitle)?_c('h4',{staticClass:"gl-mb-0 gl-max-w-17/20 gl-flex-1 gl-shrink-0 gl-overflow-hidden gl-truncate gl-text-ellipsis gl-whitespace-nowrap gl-pr-3 gl-text-sm gl-font-normal gl-text-subtle",attrs:{"data-testid":"chat-subtitle"}},[_vm._v("\n "+_vm._s(_vm.subtitle)+"\n ")]):_vm._e(),_vm._v(" "),_c('div',{staticClass:"gl-ml-auto gl-flex gl-gap-3"},[(_vm.sessionId)?_c('gl-disclosure-dropdown',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip",value:(_vm.showSessionDropdownTooltip),expression:"showSessionDropdownTooltip"}],attrs:{"icon":"ellipsis_v","category":"tertiary","text-sr-only":"","size":"small","toggle-text":_vm.$options.i18n.CHAT_DROPDOWN_MORE_OPTIONS,"items":_vm.sessionIdItems,"no-caret":""},on:{"shown":_vm.showSessionDropdown,"hidden":_vm.hideSessionDropdown}}):_vm._e(),_vm._v(" "),_c('gl-button',{attrs:{"category":"tertiary","variant":"default","icon":"close","size":"small","data-testid":"chat-close-button","aria-label":_vm.$options.i18n.CHAT_CLOSE_LABEL},on:{"click":function($event){return _vm.$emit('close')}}})],1)]):_vm._e(),_vm._v(" "),(_vm.showSubheader)?_c('div',{staticClass:"drawer-title gl-flex gl-items-center gl-justify-start gl-gap-4 gl-px-4 gl-py-3",class:{ 'gl-border-t': !_vm.showStudioHeader, 'gl-border-b': _vm.showStudioHeader },attrs:{"data-testid":"chat-subheader"}},[_c('div',{staticClass:"gl-flex gl-grow gl-gap-3"},[_c('gl-avatar',{staticClass:"gl-shrink-0",attrs:{"size":32,"entity-name":_vm.title,"shape":"circle"}}),_vm._v(" "),_c('div',{staticClass:"gl-flex gl-flex-col gl-justify-center"},[_c('h3',{staticClass:"gl-my-0 gl-line-clamp-1 gl-text-[0.875rem] gl-text-default"},[_vm._v(_vm._s(_vm.title))]),_vm._v(" "),(_vm.agentHandler)?_c('p',{staticClass:"gl-my-0 gl-text-[0.75rem] gl-text-subtle"},[_vm._v("\n "+_vm._s(_vm.agentHandler)+"\n ")]):_vm._e()])],1),_vm._v(" "),_c('div',{staticClass:"gl-flex gl-gap-3"},[(
162
- _vm.isMultithreaded && (_vm.activeThreadId || _vm.currentView === _vm.VIEW_TYPES.LIST || _vm.hasManyAgents)
163
- )?[(_vm.hasManyAgents)?_c('gl-disclosure-dropdown',{attrs:{"title":_vm.$options.i18n.CHAT_NEW_TOOLTIP,"toggle-text":_vm.$options.i18n.CHAT_NEW_TOOLTIP,"items":_vm.agents,"data-testid":"chat-new-button","variant":"confirm","category":"tertiary","size":"small","icon":"duo-chat-new","text-sr-only":"","aria-label":_vm.$options.i18n.CHAT_NEW_LABEL,"no-caret":""},on:{"action":_vm.startNewChat},scopedSlots:_vm._u([{key:"list-item",fn:function(ref){
164
- var item = ref.item;
165
- return [_c('duo-chat-header-agent-item',{attrs:{"agent":item}})]}}],null,false,1406306174)}):_c('gl-button',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip"}],attrs:{"title":_vm.$options.i18n.CHAT_NEW_TOOLTIP,"data-testid":"chat-new-button","variant":"confirm","category":"tertiary","size":"small","icon":"duo-chat-new","aria-label":_vm.$options.i18n.CHAT_NEW_LABEL},on:{"click":_vm.startNewChat}})]:_vm._e(),_vm._v(" "),(_vm.isMultithreaded && _vm.activeThreadId && _vm.currentView === _vm.VIEW_TYPES.LIST)?_c('gl-button',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip"}],attrs:{"title":_vm.$options.i18n.CHAT_BACK_TO_CHAT_TOOLTIP,"data-testid":"go-back-to-chat-button","category":"tertiary","size":"small","icon":"go-back","aria-label":_vm.$options.i18n.CHAT_BACK_TO_CHAT_TOOLTIP},on:{"click":function($event){return _vm.$emit('go-back-to-chat')}}}):_vm._e()],2)]):_vm._e(),_vm._v(" "),_vm._t("subheader"),_vm._v(" "),(_vm.error)?_c('gl-alert',{key:"error",staticClass:"!gl-pl-9",attrs:{"dismissible":false,"variant":"danger","role":"alert","data-testid":"chat-error"}},[_c('span',{directives:[{name:"safe-html",rawName:"v-safe-html",value:(_vm.error),expression:"error"}]})]):_vm._e()],2)};
157
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:"gl-shrink-0 gl-p-0",attrs:{"data-testid":"chat-header"}},[(!_vm.showStudioHeader)?_c('div',{staticClass:"gl-flex gl-w-full gl-items-center gl-px-4 gl-py-3",attrs:{"data-testid":"chat-top-header"}},[(_vm.subtitle)?_c('h4',{staticClass:"gl-mb-0 gl-max-w-17/20 gl-flex-1 gl-shrink-0 gl-overflow-hidden gl-truncate gl-text-ellipsis gl-whitespace-nowrap gl-pr-3 gl-text-sm gl-font-normal gl-text-subtle",attrs:{"data-testid":"chat-subtitle"}},[_vm._v("\n "+_vm._s(_vm.subtitle)+"\n ")]):_vm._e(),_vm._v(" "),_c('div',{staticClass:"gl-ml-auto gl-flex gl-gap-3"},[(_vm.sessionId)?_c('gl-disclosure-dropdown',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip",value:(_vm.showSessionDropdownTooltip),expression:"showSessionDropdownTooltip"}],attrs:{"icon":"ellipsis_v","category":"tertiary","text-sr-only":"","size":"small","toggle-text":_vm.$options.i18n.CHAT_DROPDOWN_MORE_OPTIONS,"items":_vm.sessionIdItems,"no-caret":""},on:{"shown":_vm.showSessionDropdown,"hidden":_vm.hideSessionDropdown}}):_vm._e(),_vm._v(" "),_c('gl-button',{attrs:{"category":"tertiary","variant":"default","icon":"close","size":"small","data-testid":"chat-close-button","aria-label":_vm.$options.i18n.CHAT_CLOSE_LABEL},on:{"click":function($event){return _vm.$emit('close')}}})],1)]):_vm._e(),_vm._v(" "),(_vm.showSubheader)?_c('div',{staticClass:"drawer-title gl-flex gl-items-center gl-justify-start gl-gap-4 gl-px-4 gl-py-3",class:{ 'gl-border-t': !_vm.showStudioHeader, 'gl-border-b': _vm.showStudioHeader },attrs:{"data-testid":"chat-subheader"}},[_c('div',{staticClass:"gl-flex gl-grow gl-gap-3"},[_c('gl-avatar',{staticClass:"gl-shrink-0",attrs:{"size":32,"entity-name":_vm.title,"shape":"circle"}}),_vm._v(" "),_c('div',{staticClass:"gl-flex gl-flex-col gl-justify-center"},[_c('h3',{staticClass:"gl-my-0 gl-line-clamp-1 gl-text-[0.875rem] gl-text-default"},[_vm._v(_vm._s(_vm.title))]),_vm._v(" "),(_vm.agentHandler)?_c('p',{staticClass:"gl-my-0 gl-text-[0.75rem] gl-text-subtle"},[_vm._v("\n "+_vm._s(_vm.agentHandler)+"\n ")]):_vm._e()])],1),_vm._v(" "),_c('div',{staticClass:"gl-flex gl-gap-3"},[(_vm.isMultithreaded && _vm.activeThreadId && _vm.currentView === _vm.VIEW_TYPES.LIST)?_c('gl-button',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip"}],attrs:{"title":_vm.$options.i18n.CHAT_BACK_TO_CHAT_TOOLTIP,"data-testid":"go-back-to-chat-button","category":"tertiary","size":"small","icon":"go-back","aria-label":_vm.$options.i18n.CHAT_BACK_TO_CHAT_TOOLTIP},on:{"click":function($event){return _vm.$emit('go-back-to-chat')}}}):_vm._e()],1)]):_vm._e(),_vm._v(" "),_vm._t("subheader"),_vm._v(" "),(_vm.error)?_c('gl-alert',{key:"error",staticClass:"!gl-pl-9",attrs:{"dismissible":false,"variant":"danger","role":"alert","data-testid":"chat-error"}},[_c('span',{directives:[{name:"safe-html",rawName:"v-safe-html",value:(_vm.error),expression:"error"}]})]):_vm._e()],2)};
166
158
  var __vue_staticRenderFns__ = [];
167
159
 
168
160
  /* style */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gitlab/duo-ui",
3
- "version": "14.3.0",
3
+ "version": "15.0.0",
4
4
  "description": "Duo UI Components",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -10,13 +10,10 @@ import {
10
10
  GlDisclosureDropdown,
11
11
  } from '@gitlab/ui';
12
12
  import { sprintf, translate } from '../../../../utils/i18n';
13
- import DuoChatHeaderAgentItem from './duo_chat_header_agent_item/duo_chat_header_agent_item.vue';
14
13
  import { VIEW_TYPES } from './constants';
15
14
 
16
15
  export const i18n = {
17
16
  CHAT_CLOSE_LABEL: translate('WebDuoChat.closeChatHeaderLabel', 'Close chat'),
18
- CHAT_NEW_LABEL: translate('WebDuoChat.chatNewLabel', 'New chat'),
19
- CHAT_NEW_TOOLTIP: translate('WebDuoChat.chatNewToolTip', 'New chat'),
20
17
  CHAT_BACK_TO_CHAT_TOOLTIP: translate('WebDuoChat.chatBackToChatToolTip', 'Back to chat'),
21
18
  CHAT_TITLE: translate('WebDuoChat.chatTitle', 'GitLab Duo Chat'),
22
19
  CHAT_DROPDOWN_MORE_OPTIONS: translate('WebDuoChat.chatDropdownMoreOptions', 'More options'),
@@ -41,7 +38,6 @@ export default {
41
38
  GlAvatar,
42
39
  GlButton,
43
40
  GlDisclosureDropdown,
44
- DuoChatHeaderAgentItem,
45
41
  },
46
42
  directives: {
47
43
  SafeHtml,
@@ -228,43 +224,6 @@ export default {
228
224
  </div>
229
225
 
230
226
  <div class="gl-flex gl-gap-3">
231
- <template
232
- v-if="
233
- isMultithreaded && (activeThreadId || currentView === VIEW_TYPES.LIST || hasManyAgents)
234
- "
235
- >
236
- <gl-disclosure-dropdown
237
- v-if="hasManyAgents"
238
- :title="$options.i18n.CHAT_NEW_TOOLTIP"
239
- :toggle-text="$options.i18n.CHAT_NEW_TOOLTIP"
240
- :items="agents"
241
- data-testid="chat-new-button"
242
- variant="confirm"
243
- category="tertiary"
244
- size="small"
245
- icon="duo-chat-new"
246
- text-sr-only
247
- :aria-label="$options.i18n.CHAT_NEW_LABEL"
248
- no-caret
249
- @action="startNewChat"
250
- >
251
- <template #list-item="{ item }">
252
- <duo-chat-header-agent-item :agent="item" />
253
- </template>
254
- </gl-disclosure-dropdown>
255
- <gl-button
256
- v-else
257
- v-gl-tooltip
258
- :title="$options.i18n.CHAT_NEW_TOOLTIP"
259
- data-testid="chat-new-button"
260
- variant="confirm"
261
- category="tertiary"
262
- size="small"
263
- icon="duo-chat-new"
264
- :aria-label="$options.i18n.CHAT_NEW_LABEL"
265
- @click="startNewChat"
266
- />
267
- </template>
268
227
  <gl-button
269
228
  v-if="isMultithreaded && activeThreadId && currentView === VIEW_TYPES.LIST"
270
229
  v-gl-tooltip
package/translations.js CHANGED
@@ -194,8 +194,6 @@ export default {
194
194
  'WebDuoChat.chatEmptyStateTitle': 'I am GitLab Duo Chat, your personal AI-powered assistant.',
195
195
  'WebDuoChat.chatHistoryTitle': 'Chat history',
196
196
  'WebDuoChat.chatModelPlaceholder': 'GitLab Duo Chat',
197
- 'WebDuoChat.chatNewLabel': 'New chat',
198
- 'WebDuoChat.chatNewToolTip': 'New chat',
199
197
  'WebDuoChat.chatPromptPlaceholderDefault': "Let's work through this together...",
200
198
  'WebDuoChat.chatPromptPlaceholderWithCommands': 'Type /help to learn more',
201
199
  'WebDuoChat.chatSubmitLabel': 'Send chat message.',