diff --git a/frontend/src/renderer/components/ShellTopbar.tsx b/frontend/src/renderer/components/ShellTopbar.tsx
index a78f2fefc..18fc8d8b2 100644
--- a/frontend/src/renderer/components/ShellTopbar.tsx
+++ b/frontend/src/renderer/components/ShellTopbar.tsx
@@ -2,6 +2,7 @@ import { useMutation, useQueryClient } from "@tanstack/react-query";
import { useNavigate, useParams } from "@tanstack/react-router";
import { GitBranch, LayoutDashboard, PanelRightClose, PanelRightOpen, Plus, Square, Trash2 } from "lucide-react";
import { useState } from "react";
+import { NotificationCenter } from "./NotificationCenter";
import {
findProjectOrchestrator,
isOrchestratorSession,
@@ -20,6 +21,11 @@ import { NewTaskDialog } from "./NewTaskDialog";
import { cn } from "../lib/utils";
const isMac = typeof navigator !== "undefined" && /Mac|iPod|iPhone|iPad/.test(navigator.userAgent);
+const isLinux =
+ typeof navigator !== "undefined" &&
+ ((navigator as Navigator & { userAgentData?: { platform?: string } }).userAgentData?.platform ?? navigator.platform)
+ .toLowerCase()
+ .includes("linux");
const dragStyle = isMac ? ({ WebkitAppRegion: "drag" } as React.CSSProperties) : undefined;
const noDragStyle = isMac ? ({ WebkitAppRegion: "no-drag" } as React.CSSProperties) : undefined;
@@ -69,10 +75,12 @@ export function ShellTopbar() {
// removed, or data still loading) shows an empty crumb — never the raw
// route slug. "agent-orchestrator" is the root-board crumb only.
const projectId = session?.workspaceId ?? params.projectId;
- const projectLabel = session?.workspaceName ?? "";
+ const isProjectBoardRoute = !isSessionRoute && Boolean(projectId);
+ const project = projectId ? all.find((workspace) => workspace.id === projectId) : undefined;
+ const projectLabel = project?.name ?? session?.workspaceName ?? (projectId ? "" : "agent-orchestrator");
const orchestrator = projectId ? findProjectOrchestrator(all, projectId) : undefined;
- if (!isSessionRoute) {
+ if (isLinux && !isSessionRoute) {
return null;
}
@@ -133,7 +141,7 @@ export function ShellTopbar() {
return (
- {isOrchestrator ? (
+ {isSessionRoute && isOrchestrator ? (
{projectLabel}
@@ -146,7 +154,7 @@ export function ShellTopbar() {
- ) : (
+ ) : isSessionRoute ? (
@@ -154,13 +162,18 @@ export function ShellTopbar() {
{session ?
: null}
+ ) : isProjectBoardRoute ? null : (
+
+ {projectLabel}
+
)}
- {isOrchestrator ? (
+ {!isLinux ?
: null}
+ {isSessionRoute && isOrchestrator ? (
<>
: null}
- {!isOrchestrator && (
+ {isSessionRoute && !isOrchestrator && (