Add CLI popup and integrate with Spotlight Search for enhanced user interaction

- Introduced a new CLI popup component accessible via keyboard shortcuts (Cmd+Shift+` / Ctrl+Shift+`).
- Updated SpotlightSearch component to include CLI option in search results, allowing users to open the CLI directly.
- Added CLI entry in helpTree for improved discoverability of the CLI feature.
- Enhanced Dashboard.vue with an App Switcher for better navigation and user experience.
This commit is contained in:
Dorian
2026-02-18 10:26:33 +00:00
parent a1282f7e68
commit 59210a7927
7 changed files with 453 additions and 2 deletions
+12 -2
View File
@@ -114,10 +114,12 @@ import { ref, computed, watch, nextTick, onMounted, onBeforeUnmount } from 'vue'
import { useRouter } from 'vue-router'
import Fuse from 'fuse.js'
import { useSpotlightStore } from '@/stores/spotlight'
import { useCLIStore } from '@/stores/cli'
import { helpTree, flattenForSearch, type SearchableItem } from '@/data/helpTree'
const router = useRouter()
const spotlightStore = useSpotlightStore()
const cliStore = useCLIStore()
const inputRef = ref<HTMLInputElement | null>(null)
const panelRef = ref<HTMLElement | null>(null)
@@ -208,7 +210,9 @@ function selectItem(item: SearchableItem) {
type: item.type,
})
spotlightStore.close()
if (item.path) {
if (item.path === '__cli__') {
cliStore.open()
} else if (item.path) {
router.push(item.path)
} else if (item.content) {
spotlightStore.showHelpModal({ title: item.label, content: item.content, relatedPath: item.relatedPath })
@@ -224,7 +228,9 @@ function selectHelpItem(section: { id: string }, item: { id: string; label: stri
type,
})
spotlightStore.close()
if (item.path) {
if (item.path === '__cli__') {
cliStore.open()
} else if (item.path) {
router.push(item.path)
} else if (item.content) {
spotlightStore.showHelpModal({ title: item.label, content: item.content, relatedPath: item.relatedPath })
@@ -233,6 +239,10 @@ function selectHelpItem(section: { id: string }, item: { id: string; label: stri
function selectRecent(item: { id: string; label: string; path?: string; type: 'navigate' | 'learn' | 'action' }) {
spotlightStore.close()
if (item.path === '__cli__') {
cliStore.open()
return
}
if (item.path) {
router.push(item.path)
return