diff --git a/src/app/projects/[projectId]/components/ProjectPage.tsx b/src/app/projects/[projectId]/components/ProjectPage.tsx
index 796f1cc..3cfa5ac 100644
--- a/src/app/projects/[projectId]/components/ProjectPage.tsx
+++ b/src/app/projects/[projectId]/components/ProjectPage.tsx
@@ -3,12 +3,14 @@
import { useQueryClient } from "@tanstack/react-query";
import {
ArrowLeftIcon,
+ ChevronDownIcon,
FolderIcon,
MessageSquareIcon,
PlusIcon,
+ SettingsIcon,
} from "lucide-react";
import Link from "next/link";
-import { useEffect } from "react";
+import { useEffect, useState } from "react";
import { SettingsControls } from "@/components/SettingsControls";
import { Button } from "@/components/ui/button";
import {
@@ -18,6 +20,11 @@ import {
CardHeader,
CardTitle,
} from "@/components/ui/card";
+import {
+ Collapsible,
+ CollapsibleContent,
+ CollapsibleTrigger,
+} from "@/components/ui/collapsible";
import { useConfig } from "../../../hooks/useConfig";
import { projectQueryConfig, useProject } from "../hooks/useProject";
import { firstCommandToTitle } from "../services/firstCommandToTitle";
@@ -29,6 +36,7 @@ export const ProjectPageContent = ({ projectId }: { projectId: string }) => {
} = useProject(projectId);
const { config } = useConfig();
const queryClient = useQueryClient();
+ const [isSettingsOpen, setIsSettingsOpen] = useState(false);
// biome-ignore lint/correctness/useExhaustiveDependencies: invalidate when config changed
useEffect(() => {
@@ -44,48 +52,77 @@ export const ProjectPageContent = ({ projectId }: { projectId: string }) => {
};
return (
-
-
+
+
-
-
-
-
+
+
+
+
{project.meta.projectPath ?? project.claudeProjectPath}
-
-
- Start New Chat
-
- }
- />
+
+
+
+ Start New Chat
+ New Chat
+
+ }
+ />
+
-
+
History File: {project.claudeProjectPath ?? "unknown"}
-
+
Conversation Sessions{" "}
{sessions.length > 0 ? `(${sessions.length})` : ""}
{/* Filter Controls */}
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
{sessions.length === 0 ? (
@@ -117,7 +154,7 @@ export const ProjectPageContent = ({ projectId }: { projectId: string }) => {
>
-
+
{session.meta.firstCommand !== null
? firstCommandToTitle(session.meta.firstCommand)
: session.id}
diff --git a/src/app/projects/[projectId]/sessions/[sessionId]/components/SessionPageContent.tsx b/src/app/projects/[projectId]/sessions/[sessionId]/components/SessionPageContent.tsx
index 8fd7b59..dae14d0 100644
--- a/src/app/projects/[projectId]/sessions/[sessionId]/components/SessionPageContent.tsx
+++ b/src/app/projects/[projectId]/sessions/[sessionId]/components/SessionPageContent.tsx
@@ -1,7 +1,13 @@
"use client";
import { useMutation } from "@tanstack/react-query";
-import { ArrowLeftIcon, LoaderIcon, PauseIcon, XIcon } from "lucide-react";
+import {
+ ArrowLeftIcon,
+ LoaderIcon,
+ MenuIcon,
+ PauseIcon,
+ XIcon,
+} from "lucide-react";
import Link from "next/link";
import type { FC } from "react";
import { useEffect, useRef, useState } from "react";
@@ -41,6 +47,7 @@ export const SessionPageContent: FC<{
const [previousConversationLength, setPreviousConversationLength] =
useState(0);
+ const [isMobileSidebarOpen, setIsMobileSidebarOpen] = useState(false);
const scrollContainerRef = useRef(null);
// 自動スクロール処理
@@ -62,27 +69,44 @@ export const SessionPageContent: FC<{
return (
-
+
-
-