From e7ba5954b69514d72c140f9b1e697fb2236df23e Mon Sep 17 00:00:00 2001 From: Guilhem Date: Tue, 22 Sep 2026 10:19:38 +0200 Subject: [PATCH] feat: add workspace mentions to AI composer (#11264) * feat: add workspace mentions to AI composer * fix: ignore embedded mention text in composer * fix: sync only standalone composer mentions * fix: keep punctuation-adjacent mentions active * fix: use unicode mention boundaries * fix: handle unicode mention prefixes * fix: avoid rescanning mention prefixes --- .../lib/components/DropdownSubmenuItem.svelte | 25 ++- frontend/src/lib/components/DropdownV2.svelte | 5 +- .../src/lib/components/DropdownV2Inner.svelte | 7 +- .../copilot/chat/AIChatDisplay.svelte | 19 +++ .../copilot/chat/AIChatInput.svelte | 41 ++--- .../copilot/chat/ContextTextarea.svelte | 39 +++-- .../chat/WorkspaceMentionPicker.svelte | 148 ++++++++++++++++++ .../components/copilot/chat/mention.test.ts | 89 ++++++++++- .../lib/components/copilot/chat/mention.ts | 56 +++++++ frontend/src/lib/utils.ts | 2 + 10 files changed, 384 insertions(+), 47 deletions(-) create mode 100644 frontend/src/lib/components/copilot/chat/WorkspaceMentionPicker.svelte diff --git a/frontend/src/lib/components/DropdownSubmenuItem.svelte b/frontend/src/lib/components/DropdownSubmenuItem.svelte index 60f7ad2d64..a67411a039 100644 --- a/frontend/src/lib/components/DropdownSubmenuItem.svelte +++ b/frontend/src/lib/components/DropdownSubmenuItem.svelte @@ -13,9 +13,10 @@ item: Item builders: ReturnType['builders'] meltItem: MenubarMenuElements['item'] + close?: (afterClose?: () => void) => void } - let { item, builders, meltItem }: Props = $props() + let { item, builders, meltItem, close }: Props = $props() const { elements: { subTrigger, subMenu }, @@ -23,6 +24,8 @@ } = untrack(() => builders).createSubmenu() let subItems = $derived((item.submenuItems ?? []).filter((i) => !i.hide)) + const CustomSubmenu = $derived(item.customSubmenu) + const closeMenu = $derived(close ?? (() => {}))