Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/desktop/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -79,4 +79,4 @@
"vite": "^7.1.3",
"vite-tsconfig-paths": "^5.1.4"
}
}
}
4 changes: 3 additions & 1 deletion apps/desktop/src/main/lib/workspace-ipcs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -558,7 +558,9 @@ export function registerWorkspaceIPCs() {

// If successful, store the PR URL in the worktree config
if (result.success && result.prUrl) {
console.log(`Storing PR URL for worktree ${worktree.id}: ${result.prUrl}`);
console.log(
`Storing PR URL for worktree ${worktree.id}: ${result.prUrl}`,
);
worktree.prUrl = result.prUrl;
await workspaceManager.saveConfig();
} else {
Expand Down
17 changes: 12 additions & 5 deletions apps/desktop/src/main/lib/worktree-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -724,7 +724,8 @@ class WorktreeManager {
console.error("Failed to commit changes:", commitError);
return {
success: false,
error: "Failed to commit changes. Please commit manually and try again.",
error:
"Failed to commit changes. Please commit manually and try again.",
};
}
}
Expand Down Expand Up @@ -764,11 +765,15 @@ class WorktreeManager {
} catch (pushError) {
const errorStr = String(pushError);
// Only ignore if branch already exists or is up-to-date
if (!errorStr.includes("already exists") && !errorStr.includes("up-to-date")) {
if (
!errorStr.includes("already exists") &&
!errorStr.includes("up-to-date")
) {
console.error("Failed to push branch:", errorStr);
return {
success: false,
error: "Failed to push branch to remote. Please push manually and try again.",
error:
"Failed to push branch to remote. Please push manually and try again.",
};
}
}
Expand Down Expand Up @@ -879,7 +884,8 @@ class WorktreeManager {
};
} catch (error) {
console.error("Failed to create PR:", error);
const errorMessage = error instanceof Error ? error.message : String(error);
const errorMessage =
error instanceof Error ? error.message : String(error);

// Provide helpful error messages
if (errorMessage.includes("could not find any commits")) {
Expand Down Expand Up @@ -929,7 +935,8 @@ class WorktreeManager {
};
} catch (error) {
console.error("Failed to merge PR:", error);
const errorMessage = error instanceof Error ? error.message : String(error);
const errorMessage =
error instanceof Error ? error.message : String(error);

return {
success: false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -241,12 +241,12 @@ function enrichWorktreesWithTasks(
isPending: true, // Mark as pending for UI
task: pending.taskData
? {
id: pending.id,
slug: pending.taskData.slug,
title: pending.taskData.name,
status: pending.taskData.status,
description: pending.description || "",
}
id: pending.id,
slug: pending.taskData.slug,
title: pending.taskData.name,
status: pending.taskData.status,
description: pending.description || "",
}
: undefined,
}),
);
Expand Down Expand Up @@ -1025,10 +1025,10 @@ export const NewLayoutMain: React.FC = () => {
{/* Main content panel */}
<ResizablePanel defaultSize={80} minSize={30}>
{loading ||
error ||
!currentWorkspace ||
!selectedTab ||
!selectedWorktree ? (
error ||
!currentWorkspace ||
!selectedTab ||
!selectedWorktree ? (
<PlaceholderState
loading={loading}
error={error}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ export const BasicWorktreeContent: React.FC<BasicWorktreeContentProps> = ({
<div className="space-y-2">
<div>
<span className="text-xs font-semibold text-neutral-500">Worktree</span>
<h4 className="text-sm font-semibold text-white mt-1">{displayTitle}</h4>
<h4 className="text-sm font-semibold text-white mt-1">
{displayTitle}
</h4>
</div>
<div className="text-xs text-neutral-400 space-y-1">
<div className="flex items-center gap-2">
Expand All @@ -23,7 +25,9 @@ export const BasicWorktreeContent: React.FC<BasicWorktreeContentProps> = ({
</div>
<div className="flex items-center gap-2">
<span className="text-neutral-500">Tabs:</span>
<span className="text-neutral-300">{worktree.tabs?.length || 0} open</span>
<span className="text-neutral-300">
{worktree.tabs?.length || 0} open
</span>
</div>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,9 @@ export const TaskWorktreeContent: React.FC<TaskWorktreeContentProps> = ({

<div className="flex items-center gap-2 col-span-2">
<span className="text-neutral-500">Tabs</span>
<span className="text-neutral-300">{worktree.tabs?.length || 0} open</span>
<span className="text-neutral-300">
{worktree.tabs?.length || 0} open
</span>
</div>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ export const WorktreeTabButton: React.FC<WorktreeTabButtonProps> = ({
{isPending ? (
<Loader2 size={14} className="animate-spin text-blue-400" />
) : (
hasTask && task && <StatusIndicator status={task.status} showLabel={false} />
hasTask &&
task && <StatusIndicator status={task.status} showLabel={false} />
)}
<span className="text-sm whitespace-nowrap">
{hasTask && task ? `[${task.slug}] ${task.title}` : displayTitle}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,10 @@ export const TaskCard: React.FC<TaskCardProps> = ({

if (taskWorktree) {
targetWorktreeId = taskWorktree.id;
} else if (currentWorkspace.worktrees && currentWorkspace.worktrees.length > 0) {
} else if (
currentWorkspace.worktrees &&
currentWorkspace.worktrees.length > 0
) {
// Use the first worktree as fallback
targetWorktreeId = currentWorkspace.worktrees[0].id;
}
Expand All @@ -82,9 +85,9 @@ export const TaskCard: React.FC<TaskCardProps> = ({
const taskPrompt = `${task.title}\n\n${task.description || ""}`.trim();
// Escape quotes and newlines for shell command
const escapedPrompt = taskPrompt
.replace(/\\/g, '\\\\') // Escape backslashes first
.replace(/"/g, '\\"') // Escape double quotes
.replace(/\n/g, '\\n'); // Escape newlines
.replace(/\\/g, "\\\\") // Escape backslashes first
.replace(/"/g, '\\"') // Escape double quotes
.replace(/\n/g, "\\n"); // Escape newlines
const result = await window.ipcRenderer.invoke("tab-create", {
workspaceId: currentWorkspace.id,
worktreeId: targetWorktreeId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,7 @@ export const TaskPage: React.FC<TaskPageProps> = ({
const [title, setTitle] = useState(task.title);
const [description, setDescription] = useState(task.description || "");
const [status, setStatus] = useState(task.status);
const [assigneeId, setAssigneeId] = useState<string | null>(
task.assigneeId,
);
const [assigneeId, setAssigneeId] = useState<string | null>(task.assigneeId);
const [isAssigneeDropdownOpen, setIsAssigneeDropdownOpen] = useState(false);
const dropdownRef = useRef<HTMLDivElement>(null);

Expand Down Expand Up @@ -145,7 +143,10 @@ export const TaskPage: React.FC<TaskPageProps> = ({

if (taskWorktree) {
targetWorktreeId = taskWorktree.id;
} else if (currentWorkspace.worktrees && currentWorkspace.worktrees.length > 0) {
} else if (
currentWorkspace.worktrees &&
currentWorkspace.worktrees.length > 0
) {
// Use the first worktree as fallback
targetWorktreeId = currentWorkspace.worktrees[0].id;
}
Expand Down Expand Up @@ -354,8 +355,9 @@ export const TaskPage: React.FC<TaskPageProps> = ({
)}
</div>
<ChevronDown
className={`w-4 h-4 text-neutral-500 transition-transform ${isAssigneeDropdownOpen ? "rotate-180" : ""
}`}
className={`w-4 h-4 text-neutral-500 transition-transform ${
isAssigneeDropdownOpen ? "rotate-180" : ""
}`}
/>
</button>

Expand All @@ -381,8 +383,7 @@ export const TaskPage: React.FC<TaskPageProps> = ({
>
<img
src={
user.avatarUrl ||
"https://via.placeholder.com/24"
user.avatarUrl || "https://via.placeholder.com/24"
}
alt={user.name}
className="w-5 h-5 rounded-full ring-1 ring-neutral-700"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,9 @@ export function Sidebar({
selectedTabId={selectedTabId}
onCloneWorktree={handleCloneWorktree}
onShowDiff={onShowDiff}
selectedWorktreeId={selectedWorktreeId ?? currentWorkspace?.activeWorktreeId}
selectedWorktreeId={
selectedWorktreeId ?? currentWorkspace?.activeWorktreeId
}
showWorkspaceHeader={true}
/>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ export function TestimonialsSection() {
transition={{ duration: 0.5 }}
className="text-center mb-12 sm:mb-16"
>

<h2 className="text-3xl sm:text-4xl md:text-5xl font-bold text-white mb-4">
Engineers love Superset
</h2>
Expand Down Expand Up @@ -83,7 +82,9 @@ export function TestimonialsSection() {
<div className="text-white font-semibold text-base">
{testimonial.author}
</div>
<div className="text-zinc-500 text-sm">{testimonial.title}</div>
<div className="text-zinc-500 text-sm">
{testimonial.title}
</div>
</div>
</div>
</div>
Expand Down Expand Up @@ -135,7 +136,9 @@ export function TestimonialsSection() {
<div className="text-white font-semibold text-base">
{testimonial.author}
</div>
<div className="text-zinc-500 text-sm">{testimonial.title}</div>
<div className="text-zinc-500 text-sm">
{testimonial.title}
</div>
</div>
</div>
</div>
Expand Down
6 changes: 3 additions & 3 deletions conductor.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"scripts": {
"setup": "./conductor-setup.sh"
}
"scripts": {
"setup": "./conductor-setup.sh"
}
}
2 changes: 1 addition & 1 deletion packages/models/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@
"bun-types": "^1.3.1",
"typescript": "^5.9.3"
}
}
}
2 changes: 1 addition & 1 deletion packages/ui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,4 @@
"react": "^18.3.1 || ^19.0.0",
"react-dom": "^18.3.1 || ^19.0.0"
}
}
}
8 changes: 7 additions & 1 deletion packages/ui/src/components/context-menu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,13 @@ import { cn } from "../lib/utils";
function ContextMenu({
...props
}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {
return <ContextMenuPrimitive.Root data-slot="context-menu" modal={false} {...props} />;
return (
<ContextMenuPrimitive.Root
data-slot="context-menu"
modal={false}
{...props}
/>
);
}

function ContextMenuTrigger({
Expand Down
Loading