feat(app): show skill/mcp badges for slash commands

Display 'skill' or 'mcp' badge instead of 'custom' for slash commands
based on their source type. This provides better clarity to users about
where each command comes from.
This commit is contained in:
R44VC0RP
2026-01-31 10:27:27 -05:00
committed by Dax Raad
parent fa75d922ed
commit 12b8c42387
16 changed files with 37 additions and 1 deletions

View File

@@ -115,6 +115,7 @@ interface SlashCommand {
description?: string description?: string
keybind?: string keybind?: string
type: "builtin" | "custom" type: "builtin" | "custom"
source?: "command" | "mcp" | "skill"
} }
export const PromptInput: Component<PromptInputProps> = (props) => { export const PromptInput: Component<PromptInputProps> = (props) => {
@@ -520,6 +521,7 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
title: cmd.name, title: cmd.name,
description: cmd.description, description: cmd.description,
type: "custom" as const, type: "custom" as const,
source: cmd.source,
})) }))
return [...custom, ...builtin] return [...custom, ...builtin]
@@ -1728,7 +1730,11 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
<div class="flex items-center gap-2 shrink-0"> <div class="flex items-center gap-2 shrink-0">
<Show when={cmd.type === "custom"}> <Show when={cmd.type === "custom"}>
<span class="text-11-regular text-text-subtle px-1.5 py-0.5 bg-surface-base rounded"> <span class="text-11-regular text-text-subtle px-1.5 py-0.5 bg-surface-base rounded">
{language.t("prompt.slash.badge.custom")} {cmd.source === "skill"
? language.t("prompt.slash.badge.skill")
: cmd.source === "mcp"
? language.t("prompt.slash.badge.mcp")
: language.t("prompt.slash.badge.custom")}
</span> </span>
</Show> </Show>
<Show when={command.keybind(cmd.id)}> <Show when={command.keybind(cmd.id)}>

View File

@@ -210,6 +210,8 @@ export const dict = {
"prompt.popover.emptyCommands": "لا توجد أوامر مطابقة", "prompt.popover.emptyCommands": "لا توجد أوامر مطابقة",
"prompt.dropzone.label": "أفلت الصور أو ملفات PDF هنا", "prompt.dropzone.label": "أفلت الصور أو ملفات PDF هنا",
"prompt.slash.badge.custom": "مخصص", "prompt.slash.badge.custom": "مخصص",
"prompt.slash.badge.skill": "مهارة",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "نشط", "prompt.context.active": "نشط",
"prompt.context.includeActiveFile": "تضمين الملف النشط", "prompt.context.includeActiveFile": "تضمين الملف النشط",
"prompt.context.removeActiveFile": "إزالة الملف النشط من السياق", "prompt.context.removeActiveFile": "إزالة الملف النشط من السياق",

View File

@@ -210,6 +210,8 @@ export const dict = {
"prompt.popover.emptyCommands": "Nenhum comando correspondente", "prompt.popover.emptyCommands": "Nenhum comando correspondente",
"prompt.dropzone.label": "Solte imagens ou PDFs aqui", "prompt.dropzone.label": "Solte imagens ou PDFs aqui",
"prompt.slash.badge.custom": "personalizado", "prompt.slash.badge.custom": "personalizado",
"prompt.slash.badge.skill": "skill",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "ativo", "prompt.context.active": "ativo",
"prompt.context.includeActiveFile": "Incluir arquivo ativo", "prompt.context.includeActiveFile": "Incluir arquivo ativo",
"prompt.context.removeActiveFile": "Remover arquivo ativo do contexto", "prompt.context.removeActiveFile": "Remover arquivo ativo do contexto",

View File

@@ -210,6 +210,8 @@ export const dict = {
"prompt.popover.emptyCommands": "Ingen matchende kommandoer", "prompt.popover.emptyCommands": "Ingen matchende kommandoer",
"prompt.dropzone.label": "Slip billeder eller PDF'er her", "prompt.dropzone.label": "Slip billeder eller PDF'er her",
"prompt.slash.badge.custom": "brugerdefineret", "prompt.slash.badge.custom": "brugerdefineret",
"prompt.slash.badge.skill": "skill",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "aktiv", "prompt.context.active": "aktiv",
"prompt.context.includeActiveFile": "Inkluder aktiv fil", "prompt.context.includeActiveFile": "Inkluder aktiv fil",
"prompt.context.removeActiveFile": "Fjern aktiv fil fra kontekst", "prompt.context.removeActiveFile": "Fjern aktiv fil fra kontekst",

View File

@@ -214,6 +214,8 @@ export const dict = {
"prompt.popover.emptyCommands": "Keine passenden Befehle", "prompt.popover.emptyCommands": "Keine passenden Befehle",
"prompt.dropzone.label": "Bilder oder PDFs hier ablegen", "prompt.dropzone.label": "Bilder oder PDFs hier ablegen",
"prompt.slash.badge.custom": "benutzerdefiniert", "prompt.slash.badge.custom": "benutzerdefiniert",
"prompt.slash.badge.skill": "skill",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "aktiv", "prompt.context.active": "aktiv",
"prompt.context.includeActiveFile": "Aktive Datei einbeziehen", "prompt.context.includeActiveFile": "Aktive Datei einbeziehen",
"prompt.context.removeActiveFile": "Aktive Datei aus dem Kontext entfernen", "prompt.context.removeActiveFile": "Aktive Datei aus dem Kontext entfernen",

View File

@@ -216,6 +216,8 @@ export const dict = {
"prompt.popover.emptyCommands": "No matching commands", "prompt.popover.emptyCommands": "No matching commands",
"prompt.dropzone.label": "Drop images or PDFs here", "prompt.dropzone.label": "Drop images or PDFs here",
"prompt.slash.badge.custom": "custom", "prompt.slash.badge.custom": "custom",
"prompt.slash.badge.skill": "skill",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "active", "prompt.context.active": "active",
"prompt.context.includeActiveFile": "Include active file", "prompt.context.includeActiveFile": "Include active file",
"prompt.context.removeActiveFile": "Remove active file from context", "prompt.context.removeActiveFile": "Remove active file from context",

View File

@@ -210,6 +210,8 @@ export const dict = {
"prompt.popover.emptyCommands": "Sin comandos coincidentes", "prompt.popover.emptyCommands": "Sin comandos coincidentes",
"prompt.dropzone.label": "Suelta imágenes o PDFs aquí", "prompt.dropzone.label": "Suelta imágenes o PDFs aquí",
"prompt.slash.badge.custom": "personalizado", "prompt.slash.badge.custom": "personalizado",
"prompt.slash.badge.skill": "skill",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "activo", "prompt.context.active": "activo",
"prompt.context.includeActiveFile": "Incluir archivo activo", "prompt.context.includeActiveFile": "Incluir archivo activo",
"prompt.context.removeActiveFile": "Eliminar archivo activo del contexto", "prompt.context.removeActiveFile": "Eliminar archivo activo del contexto",

View File

@@ -210,6 +210,8 @@ export const dict = {
"prompt.popover.emptyCommands": "Aucune commande correspondante", "prompt.popover.emptyCommands": "Aucune commande correspondante",
"prompt.dropzone.label": "Déposez des images ou des PDF ici", "prompt.dropzone.label": "Déposez des images ou des PDF ici",
"prompt.slash.badge.custom": "personnalisé", "prompt.slash.badge.custom": "personnalisé",
"prompt.slash.badge.skill": "skill",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "actif", "prompt.context.active": "actif",
"prompt.context.includeActiveFile": "Inclure le fichier actif", "prompt.context.includeActiveFile": "Inclure le fichier actif",
"prompt.context.removeActiveFile": "Retirer le fichier actif du contexte", "prompt.context.removeActiveFile": "Retirer le fichier actif du contexte",

View File

@@ -209,6 +209,8 @@ export const dict = {
"prompt.popover.emptyCommands": "一致するコマンドがありません", "prompt.popover.emptyCommands": "一致するコマンドがありません",
"prompt.dropzone.label": "画像またはPDFをここにドロップ", "prompt.dropzone.label": "画像またはPDFをここにドロップ",
"prompt.slash.badge.custom": "カスタム", "prompt.slash.badge.custom": "カスタム",
"prompt.slash.badge.skill": "スキル",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "アクティブ", "prompt.context.active": "アクティブ",
"prompt.context.includeActiveFile": "アクティブなファイルを含める", "prompt.context.includeActiveFile": "アクティブなファイルを含める",
"prompt.context.removeActiveFile": "コンテキストからアクティブなファイルを削除", "prompt.context.removeActiveFile": "コンテキストからアクティブなファイルを削除",

View File

@@ -213,6 +213,8 @@ export const dict = {
"prompt.popover.emptyCommands": "일치하는 명령어 없음", "prompt.popover.emptyCommands": "일치하는 명령어 없음",
"prompt.dropzone.label": "이미지나 PDF를 여기에 드롭하세요", "prompt.dropzone.label": "이미지나 PDF를 여기에 드롭하세요",
"prompt.slash.badge.custom": "사용자 지정", "prompt.slash.badge.custom": "사용자 지정",
"prompt.slash.badge.skill": "스킬",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "활성", "prompt.context.active": "활성",
"prompt.context.includeActiveFile": "활성 파일 포함", "prompt.context.includeActiveFile": "활성 파일 포함",
"prompt.context.removeActiveFile": "컨텍스트에서 활성 파일 제거", "prompt.context.removeActiveFile": "컨텍스트에서 활성 파일 제거",

View File

@@ -213,6 +213,8 @@ export const dict = {
"prompt.popover.emptyCommands": "Ingen matchende kommandoer", "prompt.popover.emptyCommands": "Ingen matchende kommandoer",
"prompt.dropzone.label": "Slipp bilder eller PDF-er her", "prompt.dropzone.label": "Slipp bilder eller PDF-er her",
"prompt.slash.badge.custom": "egendefinert", "prompt.slash.badge.custom": "egendefinert",
"prompt.slash.badge.skill": "skill",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "aktiv", "prompt.context.active": "aktiv",
"prompt.context.includeActiveFile": "Inkluder aktiv fil", "prompt.context.includeActiveFile": "Inkluder aktiv fil",
"prompt.context.removeActiveFile": "Fjern aktiv fil fra kontekst", "prompt.context.removeActiveFile": "Fjern aktiv fil fra kontekst",

View File

@@ -210,6 +210,8 @@ export const dict = {
"prompt.popover.emptyCommands": "Brak pasujących poleceń", "prompt.popover.emptyCommands": "Brak pasujących poleceń",
"prompt.dropzone.label": "Upuść obrazy lub pliki PDF tutaj", "prompt.dropzone.label": "Upuść obrazy lub pliki PDF tutaj",
"prompt.slash.badge.custom": "własne", "prompt.slash.badge.custom": "własne",
"prompt.slash.badge.skill": "skill",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "aktywny", "prompt.context.active": "aktywny",
"prompt.context.includeActiveFile": "Dołącz aktywny plik", "prompt.context.includeActiveFile": "Dołącz aktywny plik",
"prompt.context.removeActiveFile": "Usuń aktywny plik z kontekstu", "prompt.context.removeActiveFile": "Usuń aktywny plik z kontekstu",

View File

@@ -210,6 +210,8 @@ export const dict = {
"prompt.popover.emptyCommands": "Нет совпадающих команд", "prompt.popover.emptyCommands": "Нет совпадающих команд",
"prompt.dropzone.label": "Перетащите изображения или PDF сюда", "prompt.dropzone.label": "Перетащите изображения или PDF сюда",
"prompt.slash.badge.custom": "своё", "prompt.slash.badge.custom": "своё",
"prompt.slash.badge.skill": "навык",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "активно", "prompt.context.active": "активно",
"prompt.context.includeActiveFile": "Включить активный файл", "prompt.context.includeActiveFile": "Включить активный файл",
"prompt.context.removeActiveFile": "Удалить активный файл из контекста", "prompt.context.removeActiveFile": "Удалить активный файл из контекста",

View File

@@ -215,6 +215,8 @@ export const dict = {
"prompt.popover.emptyCommands": "ไม่พบคำสั่งที่ตรงกัน", "prompt.popover.emptyCommands": "ไม่พบคำสั่งที่ตรงกัน",
"prompt.dropzone.label": "วางรูปภาพหรือ PDF ที่นี่", "prompt.dropzone.label": "วางรูปภาพหรือ PDF ที่นี่",
"prompt.slash.badge.custom": "กำหนดเอง", "prompt.slash.badge.custom": "กำหนดเอง",
"prompt.slash.badge.skill": "skill",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "ใช้งานอยู่", "prompt.context.active": "ใช้งานอยู่",
"prompt.context.includeActiveFile": "รวมไฟล์ที่ใช้งานอยู่", "prompt.context.includeActiveFile": "รวมไฟล์ที่ใช้งานอยู่",
"prompt.context.removeActiveFile": "เอาไฟล์ที่ใช้งานอยู่ออกจากบริบท", "prompt.context.removeActiveFile": "เอาไฟล์ที่ใช้งานอยู่ออกจากบริบท",

View File

@@ -214,6 +214,8 @@ export const dict = {
"prompt.popover.emptyCommands": "没有匹配的命令", "prompt.popover.emptyCommands": "没有匹配的命令",
"prompt.dropzone.label": "将图片或 PDF 拖到这里", "prompt.dropzone.label": "将图片或 PDF 拖到这里",
"prompt.slash.badge.custom": "自定义", "prompt.slash.badge.custom": "自定义",
"prompt.slash.badge.skill": "技能",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "当前", "prompt.context.active": "当前",
"prompt.context.includeActiveFile": "包含当前文件", "prompt.context.includeActiveFile": "包含当前文件",
"prompt.context.removeActiveFile": "从上下文移除活动文件", "prompt.context.removeActiveFile": "从上下文移除活动文件",

View File

@@ -211,6 +211,8 @@ export const dict = {
"prompt.popover.emptyCommands": "沒有符合的命令", "prompt.popover.emptyCommands": "沒有符合的命令",
"prompt.dropzone.label": "將圖片或 PDF 拖到這裡", "prompt.dropzone.label": "將圖片或 PDF 拖到這裡",
"prompt.slash.badge.custom": "自訂", "prompt.slash.badge.custom": "自訂",
"prompt.slash.badge.skill": "技能",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "作用中", "prompt.context.active": "作用中",
"prompt.context.includeActiveFile": "包含作用中檔案", "prompt.context.includeActiveFile": "包含作用中檔案",
"prompt.context.removeActiveFile": "從上下文移除目前檔案", "prompt.context.removeActiveFile": "從上下文移除目前檔案",