diff --git a/apps/code/src/renderer/features/command-center/components/CommandCenterToolbar.tsx b/apps/code/src/renderer/features/command-center/components/CommandCenterToolbar.tsx index eaf011c6d..60574aa6a 100644 --- a/apps/code/src/renderer/features/command-center/components/CommandCenterToolbar.tsx +++ b/apps/code/src/renderer/features/command-center/components/CommandCenterToolbar.tsx @@ -15,13 +15,55 @@ import { useCommandCenterStore, } from "../stores/commandCenterStore"; -const LAYOUT_OPTIONS: { value: LayoutPreset; label: string }[] = [ - { value: "1x1", label: "1x1" }, - { value: "2x1", label: "2x1" }, - { value: "1x2", label: "1x2" }, - { value: "2x2", label: "2x2" }, - { value: "3x2", label: "3x2" }, - { value: "3x3", label: "3x3" }, +function LayoutIcon({ cols, rows }: { cols: number; rows: number }) { + const size = 14; + const gap = 1.5; + const cellW = (size - gap * (cols - 1)) / cols; + const cellH = (size - gap * (rows - 1)) / rows; + + const rects: React.ReactElement[] = []; + for (let r = 0; r < rows; r++) { + for (let c = 0; c < cols; c++) { + rects.push( + , + ); + } + } + + return ( + + {rects} + + ); +} + +const LAYOUT_OPTIONS: { + value: LayoutPreset; + label: string; + cols: number; + rows: number; +}[] = [ + { value: "1x1", label: "1x1", cols: 1, rows: 1 }, + { value: "2x1", label: "2x1", cols: 2, rows: 1 }, + { value: "1x2", label: "1x2", cols: 1, rows: 2 }, + { value: "2x2", label: "2x2", cols: 2, rows: 2 }, + { value: "3x2", label: "3x2", cols: 3, rows: 2 }, + { value: "3x3", label: "3x3", cols: 3, rows: 3 }, ]; interface CommandCenterToolbarProps { @@ -86,7 +128,10 @@ export function CommandCenterToolbar({ {LAYOUT_OPTIONS.map((opt) => ( - {opt.label} + + + {opt.label} + ))} diff --git a/apps/code/src/renderer/features/task-detail/components/TaskInput.tsx b/apps/code/src/renderer/features/task-detail/components/TaskInput.tsx index ad0edc9d2..07adbd97d 100644 --- a/apps/code/src/renderer/features/task-detail/components/TaskInput.tsx +++ b/apps/code/src/renderer/features/task-detail/components/TaskInput.tsx @@ -166,6 +166,27 @@ export function TaskInput({ onTaskCreated }: TaskInputProps = {}) { } }, [view.folderId, folders]); + // Auto-select the GitHub repository in cloud mode from the folder's remote URL + useEffect(() => { + if (workspaceMode !== "cloud" || selectedRepository) return; + + const folder = folders.find((f) => f.path === selectedDirectory); + if (!folder?.remoteUrl) return; + + const match = repositories.find( + (r) => r.toLowerCase() === folder.remoteUrl?.toLowerCase(), + ); + if (match) { + setSelectedRepository(match); + } + }, [ + workspaceMode, + selectedDirectory, + folders, + repositories, + selectedRepository, + ]); + const effectiveRepoPath = workspaceMode === "cloud" ? selectedRepository : selectedDirectory;