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
View File
@@ -9,6 +9,9 @@
<!-- Spotlight command palette (Cmd+K / Ctrl+K) -->
<SpotlightSearch />
<!-- CLI popup (Cmd+Shift+` / Ctrl+Shift+`) -->
<CLIPopup />
<!-- App launcher overlay (iframe popup) -->
<AppLauncherOverlay />
@@ -59,11 +62,13 @@ import { useRouter, useRoute } from 'vue-router'
import SplashScreen from './components/SplashScreen.vue'
import PWAUpdatePrompt from './components/PWAUpdatePrompt.vue'
import SpotlightSearch from './components/SpotlightSearch.vue'
import CLIPopup from './components/CLIPopup.vue'
import AppLauncherOverlay from './components/AppLauncherOverlay.vue'
import Screensaver from './components/Screensaver.vue'
import HelpGuideModal from './components/HelpGuideModal.vue'
import { useControllerNav } from '@/composables/useControllerNav'
import { useSpotlightStore } from '@/stores/spotlight'
import { useCLIStore } from '@/stores/cli'
import { useMessageToast } from '@/composables/useMessageToast'
import { useAppStore } from '@/stores/app'
import { useScreensaverStore } from '@/stores/screensaver'
@@ -71,6 +76,7 @@ import { useScreensaverStore } from '@/stores/screensaver'
const router = useRouter()
const screensaverStore = useScreensaverStore()
const spotlightStore = useSpotlightStore()
const cliStore = useCLIStore()
const appStore = useAppStore()
const messageToast = useMessageToast()
const toastMessage = messageToast.toastMessage
@@ -108,6 +114,12 @@ function onKeyDown(e: KeyboardEvent) {
spotlightStore.toggle()
return
}
// Cmd+Shift+` / Ctrl+Shift+` or plain C - CLI popup
if ((mod && e.shiftKey && e.key === '`') || ((e.key === 'c' || e.key === 'C') && !isInput)) {
e.preventDefault()
cliStore.toggle()
return
}
// 's' key activates screensaver when authenticated (skip if typing in input)
if (e.key === 's' || e.key === 'S') {
const target = e.target as HTMLElement