feat: integrate scratchpad sidebar into tree navigation page

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Michael Chihlas
2026-02-04 02:51:52 -05:00
parent 26cf66e239
commit 4a0193f9af

View File

@@ -7,7 +7,7 @@ import type { CustomStepDraft } from '@/components/step-library/CustomStepModal'
import { cn } from '@/lib/utils' import { cn } from '@/lib/utils'
import { MarkdownContent } from '@/components/ui/MarkdownContent' import { MarkdownContent } from '@/components/ui/MarkdownContent'
import { CustomStepModal } from '@/components/step-library/CustomStepModal' import { CustomStepModal } from '@/components/step-library/CustomStepModal'
import { PostStepActionModal, ContinuationModal, ForkTreeModal, type DescendantNode } from '@/components/session' import { PostStepActionModal, ContinuationModal, ForkTreeModal, ScratchpadSidebar, type DescendantNode } from '@/components/session'
import { Plus, CheckCircle, ArrowRight } from 'lucide-react' import { Plus, CheckCircle, ArrowRight } from 'lucide-react'
interface LocationState { interface LocationState {
@@ -56,6 +56,12 @@ export function TreeNavigationPage() {
// Fork flow // Fork flow
const [showForkModal, setShowForkModal] = useState(false) const [showForkModal, setShowForkModal] = useState(false)
// Scratchpad save handler
const handleScratchpadSave = async (content: string) => {
if (!session) return
await sessionsApi.updateScratchpad(session.id, content)
}
useEffect(() => { useEffect(() => {
if (treeId) { if (treeId) {
loadTreeAndSession() loadTreeAndSession()
@@ -630,7 +636,10 @@ export function TreeNavigationPage() {
} }
return ( return (
<div className="container mx-auto px-4 py-8"> <div className="flex h-[calc(100vh-4rem)]">
{/* Main Content */}
<div className="flex-1 min-w-0 overflow-y-auto px-4 py-8">
<div className="mx-auto max-w-4xl">
{/* Header */} {/* Header */}
<div className="mb-6 flex items-center justify-between"> <div className="mb-6 flex items-center justify-between">
<div> <div>
@@ -1006,6 +1015,17 @@ export function TreeNavigationPage() {
onFork={handleForkTree} onFork={handleForkTree}
onSkip={handleSkipFork} onSkip={handleSkipFork}
/> />
</div>
</div>
{/* Scratchpad Sidebar */}
{session && (
<ScratchpadSidebar
sessionId={session.id}
initialContent={session.scratchpad ?? ''}
onSave={handleScratchpadSave}
/>
)}
</div> </div>
) )
} }