diff --git a/frontend/src/pages/TreeNavigationPage.tsx b/frontend/src/pages/TreeNavigationPage.tsx
index d0065a78..edb48c38 100644
--- a/frontend/src/pages/TreeNavigationPage.tsx
+++ b/frontend/src/pages/TreeNavigationPage.tsx
@@ -4,15 +4,18 @@ import { treesApi } from '@/api/trees'
import { sessionsApi } from '@/api/sessions'
import { useTreeNavigationShortcuts } from '@/hooks/useKeyboardShortcuts'
import { useCustomStepFlow } from '@/hooks/useCustomStepFlow'
+import { useSessionTimer } from '@/hooks/useSessionTimer'
import type { Tree, Session, DecisionRecord, TreeStructure } from '@/types'
-import { cn, safeGetItem } from '@/lib/utils'
+import { cn, safeGetItem, safeSetItem } from '@/lib/utils'
import { MarkdownContent } from '@/components/ui/MarkdownContent'
import { CustomStepModal } from '@/components/step-library/CustomStepModal'
import { PostStepActionModal, ContinuationModal, ForkTreeModal, ScratchpadSidebar } from '@/components/session'
-import { Plus, CheckCircle, ArrowRight } from 'lucide-react'
+import { Plus, CheckCircle, ArrowRight, Clock } from 'lucide-react'
interface LocationState {
sessionId?: string
+ prefillClientName?: string
+ prefillTicketNumber?: string
}
export function TreeNavigationPage() {
@@ -31,11 +34,14 @@ export function TreeNavigationPage() {
const [error, setError] = useState
(null)
const [isCompleting, setIsCompleting] = useState(false)
- // Session metadata
- const [ticketNumber, setTicketNumber] = useState('')
- const [clientName, setClientName] = useState('')
+ // Session metadata (prefill from Repeat Last Session)
+ const [ticketNumber, setTicketNumber] = useState(locationState?.prefillTicketNumber || '')
+ const [clientName, setClientName] = useState(locationState?.prefillClientName || '')
const [showMetadataForm, setShowMetadataForm] = useState(true)
+ // Session timer
+ const timerDisplay = useSessionTimer(session?.started_at)
+
// Scratchpad state
const [scratchpadOpen, setScratchpadOpen] = useState(() => {
return safeGetItem('scratchpad-collapsed') === 'false'
@@ -120,6 +126,13 @@ export function TreeNavigationPage() {
})
setSession(newSession)
setShowMetadataForm(false)
+ // Save for "Repeat Last Session"
+ safeSetItem('last-session', JSON.stringify({
+ tree_id: tree.id,
+ tree_name: tree.name,
+ client_name: clientName || '',
+ ticket_number: ticketNumber || '',
+ }))
} catch (err) {
setError('Failed to start session')
console.error(err)
@@ -368,7 +381,15 @@ export function TreeNavigationPage() {
{/* Header */}
-
{tree.name}
+
+
{tree.name}
+ {timerDisplay && (
+
+
+ {timerDisplay}
+
+ )}
+
{(ticketNumber || clientName) && (
{ticketNumber && `Ticket: ${ticketNumber}`}
@@ -665,6 +686,7 @@ export function TreeNavigationPage() {
Notes (optional)
)}