authorgravatar for otavio@ossystems.com.brOtavio Salvador <otavio@ossystems.com.br> 2026-09-26 00:56:17-03:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-09-25 22:56:17-05:00
logeeea71a88108c375c04853f58c298a518a54acaf
tree08eaa5f3f868c4240e30d4bff0ddaf3975652a1d
parent1e844a3d0647e9d2ca87d91b2fab5833bba19d08
signature Signed by PGP key B5690EEEBB952194

fix(web): make the empty workspace draggable on desktop (#13713)


2 files changed, 5 insertions(+), 0 deletions(-)

apps/web/src/components/NoProjectsHero.tsx+4
...@@ -2,9 +2,11 @@ import { PlusIcon } from "lucide-react";...@@ -2,9 +2,11 @@ import { PlusIcon } from "lucide-react";
2import { useCallback } from "react";2import { useCallback } from "react";
33
4import { openCommandPalette } from "../commandPaletteBus";4import { openCommandPalette } from "../commandPaletteBus";
5import { isElectron } from "../env";
5import { Button } from "./ui/button";6import { Button } from "./ui/button";
6import { Empty, EmptyDescription, EmptyHeader, EmptyTitle } from "./ui/empty";7import { Empty, EmptyDescription, EmptyHeader, EmptyTitle } from "./ui/empty";
7import { SidebarInset } from "./ui/sidebar";8import { SidebarInset } from "./ui/sidebar";
9import { WorkspacePageHeader } from "./WorkspacePageHeader";
810
9export function NoProjectsHero() {11export function NoProjectsHero() {
10 const openAddProject = useCallback(() => openCommandPalette({ open: "add-project" }), []);12 const openAddProject = useCallback(() => openCommandPalette({ open: "add-project" }), []);
...@@ -12,6 +14,8 @@ export function NoProjectsHero() {...@@ -12,6 +14,8 @@ export function NoProjectsHero() {
12 return (14 return (
13 <SidebarInset className="h-dvh min-h-0 overflow-hidden overscroll-y-none">15 <SidebarInset className="h-dvh min-h-0 overflow-hidden overscroll-y-none">
14 <div className="flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden bg-background">16 <div className="flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden bg-background">
17 {/* The desktop window only moves where CSS opts in, so keep a titlebar strip. */}
18 {isElectron ? <WorkspacePageHeader electron /> : null}
15 <Empty size="hero" className="flex-1">19 <Empty size="hero" className="flex-1">
16 <div className="w-full max-w-lg px-8 py-12">20 <div className="w-full max-w-lg px-8 py-12">
17 <EmptyHeader className="max-w-none">21 <EmptyHeader className="max-w-none">
apps/web/src/routes/_chat.index.tsx+1
...@@ -91,6 +91,7 @@ function IndexDraftLanding() {...@@ -91,6 +91,7 @@ function IndexDraftLanding() {
91function DraftStartError({ onRetry }: { readonly onRetry: () => void }) {91function DraftStartError({ onRetry }: { readonly onRetry: () => void }) {
92 return (92 return (
93 <SidebarInset className="h-dvh min-h-0 overflow-hidden overscroll-y-none">93 <SidebarInset className="h-dvh min-h-0 overflow-hidden overscroll-y-none">
94 {isElectron ? <WorkspacePageHeader electron /> : null}
94 <Empty className="flex-1">95 <Empty className="flex-1">
95 <EmptyHeader className="max-w-md">96 <EmptyHeader className="max-w-md">
96 <EmptyTitle>Couldn’t start a new thread</EmptyTitle>97 <EmptyTitle>Couldn’t start a new thread</EmptyTitle>