diff --git a/e2e/captureSnapshot/session-detail.ts b/e2e/captureSnapshot/session-detail.ts
index 2c1dd14..2ddf8ad 100644
--- a/e2e/captureSnapshot/session-detail.ts
+++ b/e2e/captureSnapshot/session-detail.ts
@@ -86,5 +86,22 @@ export const sessionDetailCapture = defineCapture({
}
},
},
+
+ {
+ name: "sidechain-task-modal",
+ setup: async (page) => {
+ const sidechainTaskButton = page
+ .locator('[data-testid="sidechain-task-button"]')
+ .first();
+ if (await sidechainTaskButton.isVisible()) {
+ await sidechainTaskButton.click();
+ await page.waitForTimeout(1000);
+
+ // モーダルが開いたことを確認
+ const modal = page.locator('[data-testid="sidechain-task-modal"]');
+ await modal.waitFor({ state: "visible", timeout: 3000 });
+ }
+ },
+ },
],
});
diff --git a/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationModal/SidechainConversationModal.tsx b/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationModal/SidechainConversationModal.tsx
index e9bfae6..12b526a 100644
--- a/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationModal/SidechainConversationModal.tsx
+++ b/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationModal/SidechainConversationModal.tsx
@@ -67,6 +67,7 @@ export const SidechainConversationModal: FC<
variant="outline"
size="sm"
className="w-full mb-3 items-center justify-start"
+ data-testid="sidechain-task-button"
>
@@ -76,7 +77,10 @@ export const SidechainConversationModal: FC<
-
+
{title.length > 100 ? `${title.slice(0, 100)}...` : title}
diff --git a/src/server/core/git/presentation/GitController.ts b/src/server/core/git/presentation/GitController.ts
index 200830a..4f90a35 100644
--- a/src/server/core/git/presentation/GitController.ts
+++ b/src/server/core/git/presentation/GitController.ts
@@ -1,4 +1,4 @@
-import { Context, Effect, Layer } from "effect";
+import { Context, Effect, Either, Layer } from "effect";
import type { ControllerResponse } from "../../../lib/effect/toEffectResponse";
import type { InferEffect } from "../../../lib/effect/types";
import { ProjectRepository } from "../../project/infrastructure/ProjectRepository";
@@ -23,9 +23,19 @@ const LayerImpl = Effect.gen(function* () {
}
const projectPath = project.meta.projectPath;
- const branches = yield* gitService.getBranches(projectPath);
+ const branches = yield* Effect.either(
+ gitService.getBranches(projectPath),
+ );
+
+ if (Either.isLeft(branches)) {
+ return {
+ response: [],
+ status: 200,
+ } as const satisfies ControllerResponse;
+ }
+
return {
- response: branches,
+ response: branches.right,
status: 200,
} as const satisfies ControllerResponse;
});
@@ -45,9 +55,17 @@ const LayerImpl = Effect.gen(function* () {
const projectPath = project.meta.projectPath;
- const commits = yield* gitService.getCommits(projectPath);
+ const commits = yield* Effect.either(gitService.getCommits(projectPath));
+
+ if (Either.isLeft(commits)) {
+ return {
+ response: [],
+ status: 200,
+ } as const satisfies ControllerResponse;
+ }
+
return {
- response: commits,
+ response: commits.right,
status: 200,
} as const satisfies ControllerResponse;
});