Add a dev menu item to show the home screen

This commit is contained in:
Gregory Schier
2026-09-15 14:27:11 -07:00
parent bcbf6d32a7
commit a8c845b091
4 changed files with 20 additions and 1 deletions
@@ -5,10 +5,13 @@ import { useHotKey, useSubscribeHotKeys } from "../hooks/useHotKey";
import { useSubscribeHttpAuthentication } from "../hooks/useHttpAuthentication"; import { useSubscribeHttpAuthentication } from "../hooks/useHttpAuthentication";
import { useSyncFontSizeSetting } from "../hooks/useSyncFontSizeSetting"; import { useSyncFontSizeSetting } from "../hooks/useSyncFontSizeSetting";
import { useSyncWorkspaceChildModels } from "../hooks/useSyncWorkspaceChildModels"; import { useSyncWorkspaceChildModels } from "../hooks/useSyncWorkspaceChildModels";
import { usePlatformEvent } from "../hooks/usePlatformEvent";
import { useSyncZoomSetting } from "../hooks/useSyncZoomSetting"; import { useSyncZoomSetting } from "../hooks/useSyncZoomSetting";
import { useSubscribeTemplateFunctions } from "../hooks/useTemplateFunctions"; import { useSubscribeTemplateFunctions } from "../hooks/useTemplateFunctions";
import { fireAndForget } from "../lib/fireAndForget";
import { jotaiStore } from "../lib/jotai"; import { jotaiStore } from "../lib/jotai";
import { renameModelWithPrompt } from "../lib/renameModelWithPrompt"; import { renameModelWithPrompt } from "../lib/renameModelWithPrompt";
import { router } from "../lib/router";
export function GlobalHooks() { export function GlobalHooks() {
useSyncZoomSetting(); useSyncZoomSetting();
@@ -24,6 +27,10 @@ export function GlobalHooks() {
useActiveWorkspaceChangedToast(); useActiveWorkspaceChangedToast();
useSubscribeHotKeys(); useSubscribeHotKeys();
usePlatformEvent("show_home", () => {
fireAndForget(router.navigate({ to: "/", search: { home: true } }));
});
useHotKey( useHotKey(
"request.rename", "request.rename",
async () => { async () => {
+10 -1
View File
@@ -1,10 +1,19 @@
import { createFileRoute } from "@tanstack/react-router"; import { createFileRoute } from "@tanstack/react-router";
import { Onboarding } from "../components/Onboarding";
import { RedirectToLatestWorkspace } from "../components/RedirectToLatestWorkspace"; 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("/")({ export const Route = createFileRoute("/")({
component: RouteComponent, component: RouteComponent,
validateSearch: (search: Record<string, unknown>): IndexSearchSchema =>
search.home === true ? { home: true } : {},
}); });
function RouteComponent() { function RouteComponent() {
return <RedirectToLatestWorkspace />; const { home } = Route.useSearch();
return home ? <Onboarding /> : <RedirectToLatestWorkspace />;
} }
+1
View File
@@ -137,6 +137,7 @@ fn setup_window_menu<R: Runtime>(win: &WebviewWindow<R>) -> Result<()> {
"dev.generate_theme_css" => { "dev.generate_theme_css" => {
w.emit("generate_theme_css", true).unwrap(); w.emit("generate_theme_css", true).unwrap();
} }
"dev.show_home" => w.emit("show_home", true).unwrap(),
"dev.toggle_devtools" => { "dev.toggle_devtools" => {
if webview_window.is_devtools_open() { if webview_window.is_devtools_open() {
webview_window.close_devtools(); webview_window.close_devtools();
@@ -165,6 +165,8 @@ pub fn app_menu<R: Runtime>(app_handle: &AppHandle<R>) -> tauri::Result<Menu<R>>
"Generate Theme CSS", "Generate Theme CSS",
) )
.build(app_handle)?, .build(app_handle)?,
&MenuItemBuilder::with_id("dev.show_home".to_string(), "Show Home Screen")
.build(app_handle)?,
], ],
)?, )?,
], ],