diff --git a/packages/app/src/components/titlebar.tsx b/packages/app/src/components/titlebar.tsx index 1a2a8a81b6d4..92e82ccd6e1e 100644 --- a/packages/app/src/components/titlebar.tsx +++ b/packages/app/src/components/titlebar.tsx @@ -367,9 +367,21 @@ export function Titlebar(props: { update?: TitlebarUpdate }) { const project = global.ensureServerCtx(conn).projects.list()[0] return project ? [{ server: ServerConnection.key(conn), project }] : [] })[0] - if (!fallback) return + if (fallback) { + tabs.newDraft({ server: fallback.server, directory: fallback.project.worktree }, "") + return + } - tabs.newDraft({ server: fallback.server, directory: fallback.project.worktree }, "") + // Last resort: use server-registered projects from sync data when + // no projects have been opened yet (fresh web start) + const conn = global.servers.list()[0] ?? server.current + if (conn) { + const ctx = global.ensureServerCtx(conn) + const registered = ctx.sync.data.project[0] + if (registered) { + tabs.newDraft({ server: ServerConnection.key(conn), directory: registered.worktree }, "") + } + } } const toggleHome = () => tabs.toggleHome({ home: layout.route().type === "home", current: currentTab() }) diff --git a/packages/app/src/pages/home.tsx b/packages/app/src/pages/home.tsx index 215696d7de62..d596ab1f9b98 100644 --- a/packages/app/src/pages/home.tsx +++ b/packages/app/src/pages/home.tsx @@ -332,7 +332,8 @@ export function NewHome() { () => selectedProject() ?? projects().find((project) => project.worktree === focusedServerCtx()?.projects.last()) ?? - projects()[0], + projects()[0] ?? + focusedSync().data.project[0] as LocalProject | undefined, ) const directories = (project: LocalProject) => [project.worktree, ...(project.sandboxes ?? [])] const projectDirectories = createMemo(() => {