diff --git a/apps/yaak-client/components/GlobalHooks.tsx b/apps/yaak-client/components/GlobalHooks.tsx index 67499e94..44744fef 100644 --- a/apps/yaak-client/components/GlobalHooks.tsx +++ b/apps/yaak-client/components/GlobalHooks.tsx @@ -5,10 +5,13 @@ import { useHotKey, useSubscribeHotKeys } from "../hooks/useHotKey"; import { useSubscribeHttpAuthentication } from "../hooks/useHttpAuthentication"; import { useSyncFontSizeSetting } from "../hooks/useSyncFontSizeSetting"; import { useSyncWorkspaceChildModels } from "../hooks/useSyncWorkspaceChildModels"; +import { usePlatformEvent } from "../hooks/usePlatformEvent"; import { useSyncZoomSetting } from "../hooks/useSyncZoomSetting"; import { useSubscribeTemplateFunctions } from "../hooks/useTemplateFunctions"; +import { fireAndForget } from "../lib/fireAndForget"; import { jotaiStore } from "../lib/jotai"; import { renameModelWithPrompt } from "../lib/renameModelWithPrompt"; +import { router } from "../lib/router"; export function GlobalHooks() { useSyncZoomSetting(); @@ -24,6 +27,10 @@ export function GlobalHooks() { useActiveWorkspaceChangedToast(); useSubscribeHotKeys(); + usePlatformEvent("show_home", () => { + fireAndForget(router.navigate({ to: "/", search: { home: true } })); + }); + useHotKey( "request.rename", async () => { diff --git a/apps/yaak-client/routes/index.tsx b/apps/yaak-client/routes/index.tsx index 7314959c..2fbb3159 100644 --- a/apps/yaak-client/routes/index.tsx +++ b/apps/yaak-client/routes/index.tsx @@ -1,10 +1,19 @@ import { createFileRoute } from "@tanstack/react-router"; +import { Onboarding } from "../components/Onboarding"; import { RedirectToLatestWorkspace } from "../components/RedirectToLatestWorkspace"; +type IndexSearchSchema = { + /** Show the home screen even when workspaces exist. Set by the dev menu. */ + home?: true; +}; + export const Route = createFileRoute("/")({ component: RouteComponent, + validateSearch: (search: Record): IndexSearchSchema => + search.home === true ? { home: true } : {}, }); function RouteComponent() { - return ; + const { home } = Route.useSearch(); + return home ? : ; } diff --git a/crates-tauri/yaak-app-client/src/lib.rs b/crates-tauri/yaak-app-client/src/lib.rs index 4c29fd0d..e8c301ec 100644 --- a/crates-tauri/yaak-app-client/src/lib.rs +++ b/crates-tauri/yaak-app-client/src/lib.rs @@ -137,6 +137,7 @@ fn setup_window_menu(win: &WebviewWindow) -> Result<()> { "dev.generate_theme_css" => { w.emit("generate_theme_css", true).unwrap(); } + "dev.show_home" => w.emit("show_home", true).unwrap(), "dev.toggle_devtools" => { if webview_window.is_devtools_open() { webview_window.close_devtools(); diff --git a/crates-tauri/yaak-app-client/src/window_menu.rs b/crates-tauri/yaak-app-client/src/window_menu.rs index 41491247..df2974d6 100644 --- a/crates-tauri/yaak-app-client/src/window_menu.rs +++ b/crates-tauri/yaak-app-client/src/window_menu.rs @@ -165,6 +165,8 @@ pub fn app_menu(app_handle: &AppHandle) -> tauri::Result> "Generate Theme CSS", ) .build(app_handle)?, + &MenuItemBuilder::with_id("dev.show_home".to_string(), "Show Home Screen") + .build(app_handle)?, ], )?, ],