diff --git a/packages/web/src/app/globals.css b/packages/web/src/app/globals.css index 38a300e88..8bb4b4016 100644 --- a/packages/web/src/app/globals.css +++ b/packages/web/src/app/globals.css @@ -5817,7 +5817,8 @@ html.light .xterm .xterm-viewport:hover::-webkit-scrollbar-thumb:active { /* -- Kanban board: stack columns vertically -- */ .kanban-board { - grid-template-columns: minmax(0, 1fr); + display: flex; + flex-direction: column; height: auto; min-height: auto; overflow-x: visible; diff --git a/packages/web/src/app/manifest.test.ts b/packages/web/src/app/manifest.test.ts index bd6e7e62f..de9f09808 100644 --- a/packages/web/src/app/manifest.test.ts +++ b/packages/web/src/app/manifest.test.ts @@ -12,13 +12,17 @@ describe("app manifest", () => { name: "ao | Agent Orchestrator", short_name: "ao", start_url: "/", + scope: "/", display: "standalone", + orientation: "portrait-primary", background_color: "#121110", theme_color: "#121110", icons: [ { src: "/apple-icon", sizes: "180x180", type: "image/png" }, { src: "/icon-192", sizes: "192x192", type: "image/png", purpose: "any" }, + { src: "/icon-192", sizes: "192x192", type: "image/png", purpose: "maskable" }, { src: "/icon-512", sizes: "512x512", type: "image/png", purpose: "any" }, + { src: "/icon-512", sizes: "512x512", type: "image/png", purpose: "maskable" }, ], }); }); diff --git a/packages/web/src/app/manifest.ts b/packages/web/src/app/manifest.ts index 6977692da..2138c2d92 100644 --- a/packages/web/src/app/manifest.ts +++ b/packages/web/src/app/manifest.ts @@ -8,13 +8,17 @@ export default function manifest(): MetadataRoute.Manifest { short_name: "ao", description: "Dashboard for managing parallel AI coding agents", start_url: "/", + scope: "/", display: "standalone", + orientation: "portrait-primary", background_color: "#121110", theme_color: "#121110", icons: [ { src: "/apple-icon", sizes: "180x180", type: "image/png" }, { src: "/icon-192", sizes: "192x192", type: "image/png", purpose: "any" }, + { src: "/icon-192", sizes: "192x192", type: "image/png", purpose: "maskable" }, { src: "/icon-512", sizes: "512x512", type: "image/png", purpose: "any" }, + { src: "/icon-512", sizes: "512x512", type: "image/png", purpose: "maskable" }, ], }; } diff --git a/packages/web/src/components/Dashboard.tsx b/packages/web/src/components/Dashboard.tsx index f9dd25245..2e5a3eade 100644 --- a/packages/web/src/components/Dashboard.tsx +++ b/packages/web/src/components/Dashboard.tsx @@ -25,6 +25,7 @@ import { ConnectionBar } from "./ConnectionBar"; import { CopyDebugBundleButton } from "./CopyDebugBundleButton"; import { SidebarContext } from "./workspace/SidebarContext"; import { projectDashboardPath, projectSessionPath } from "@/lib/routes"; +import { BottomSheet } from "./BottomSheet"; interface DashboardProps { initialSessions: DashboardSession[]; @@ -121,7 +122,7 @@ function DoneCard({ ) : null} {formatRelativeTimeCompact(session.lastActivityAt)} - {canRestore ? ( + {canRestore && !isMerged ? (