diff --git a/frontend/src/lib/components/copilot/chat/AvailableContextList.svelte b/frontend/src/lib/components/copilot/chat/AvailableContextList.svelte index e521a31679..468e5ceafc 100644 --- a/frontend/src/lib/components/copilot/chat/AvailableContextList.svelte +++ b/frontend/src/lib/components/copilot/chat/AvailableContextList.svelte @@ -8,11 +8,24 @@ export let stringSearch = '' export let selectedIndex = 0 + // Define priority map for context types + const typePriority = { + code: 1, + diff: 2, + default: 3 + } + + $: sortedAvailableContext = availableContext.sort((a, b) => { + const priorityA = typePriority[a.type] || typePriority.default + const priorityB = typePriority[b.type] || typePriority.default + return priorityA - priorityB + }) + $: actualAvailableContext = showAllAvailable - ? availableContext.filter( + ? sortedAvailableContext.filter( (c) => !stringSearch || c.title.toLowerCase().includes(stringSearch.toLowerCase()) ) - : availableContext.filter( + : sortedAvailableContext.filter( (c) => !selectedContext.find((sc) => sc.type === c.type && sc.title === c.title) && (!stringSearch || c.title.toLowerCase().includes(stringSearch.toLowerCase())) @@ -32,7 +45,7 @@ on:click={() => onSelect(element)} > - {element.title} + {element.type === 'diff' ? element.title.replace(/_/g, ' ') : element.title} {/each} {/if} diff --git a/frontend/src/lib/components/copilot/chat/ContextElementBadge.svelte b/frontend/src/lib/components/copilot/chat/ContextElementBadge.svelte index 25baf11ae0..bfb0b10f03 100644 --- a/frontend/src/lib/components/copilot/chat/ContextElementBadge.svelte +++ b/frontend/src/lib/components/copilot/chat/ContextElementBadge.svelte @@ -42,7 +42,9 @@ {/if} - {contextElement.title} + {contextElement.type === 'diff' + ? contextElement.title.replace(/_/g, ' ') + : contextElement.title} diff --git a/frontend/src/lib/components/copilot/chat/ContextManager.svelte.ts b/frontend/src/lib/components/copilot/chat/ContextManager.svelte.ts index e05e6fd622..ad89b9b672 100644 --- a/frontend/src/lib/components/copilot/chat/ContextManager.svelte.ts +++ b/frontend/src/lib/components/copilot/chat/ContextManager.svelte.ts @@ -93,7 +93,7 @@ export default class ContextManager { if (scriptOptions.lastSavedCode && scriptOptions.lastSavedCode !== scriptOptions.code) { newAvailableContext.push({ type: 'diff', - title: 'diff_with_last_saved_draft', + title: 'diff_with_last_saved_draft', // can't use spaces in the title, because it will break the word match in the context text area hightlighting logic content: scriptOptions.lastSavedCode ?? '', diff: diffLines(scriptOptions.lastSavedCode ?? '', scriptOptions.code), lang: scriptOptions.lang