Skip to content

Sessions

One-Liner

The Sessions page provides a centralized hub for viewing, filtering, and managing all workflow sessions with CRUD operations and status tracking.


Pain Points Solved

Pain PointCurrent StateSessions Solution
Lost sessionsCan't find past workUnified list of all sessions with search
Unknown session statusNo progress visibilityColor-coded status badges with filters
Cluttered viewActive and archived mixedLocation tabs (active/archived/all)
Hard to navigateNo way to access detailsClick to navigate to detail or review page
No bulk actionsManual cleanupArchive and delete with confirmation dialogs

Page Overview

Location: ccw/frontend/src/pages/SessionsPage.tsx

Purpose: Sessions list page with filtering, search, and CRUD operations for managing workflow sessions.

Access: Navigation → Sessions

Layout

+--------------------------------------------------------------------------+
|  Sessions Title                                     [Refresh] [Fullscreen]|
+--------------------------------------------------------------------------+
|  [Active] [Archived] [All]  [Search...]  [Filter v]                      |
+--------------------------------------------------------------------------+
|  Active filters display (when applied)                                      |
+--------------------------------------------------------------------------+
|  Session Grid (1/2/3 columns responsive)                                   |
|  +-------------+  +-------------+  +-------------+                         |
|  | SessionCard |  | SessionCard |  | SessionCard |                         |
|  | - Status    |  | - Status    |  | - Status    |                         |
|  | - Title     |  | - Title     |  | - Title     |                         |
|  | - Progress  |  | - Progress  |  | - Progress  |                         |
|  | - Actions   |  | - Actions   |  | - Actions   |                         |
|  +-------------+  +-------------+  +-------------+                         |
+--------------------------------------------------------------------------+
|  Empty State (when no sessions)                                            |
+--------------------------------------------------------------------------+

Core Features

FeatureDescription
Location TabsFilter sessions by location: Active, Archived, or All
SearchFull-text search across session titles and descriptions
Status FilterMulti-select dropdown to filter by status (planning, in_progress, completed, paused)
Active Filters DisplayVisual badges showing applied filters with remove buttons
Session CardsResponsive grid (1/2/3 columns) with status badge, title, description, progress bar, and action buttons
Immersive ModeFullscreen toggle to hide app chrome for focused work
Loading SkeletonsSkeleton placeholders during data fetch
Empty StatesFriendly message with call-to-action when no sessions match filters

Usage Guide

Basic Workflow

  1. Browse Sessions: Use location tabs to switch between Active, Archived, and All sessions
  2. Search: Type in the search box to filter by title or description
  3. Filter by Status: Click the filter button to select one or more statuses
  4. Clear Filters: Click individual filter badges or "Clear All" button
  5. View Details: Click a session card to navigate to session detail page
  6. Manage Sessions: Use action buttons to archive or delete sessions

Key Interactions

InteractionHow to Use
Navigate to detailClick anywhere on the session card to open detail page
Navigate to reviewReview-type sessions automatically route to the review page
Archive sessionClick the archive button on the card (no confirmation required)
Delete sessionClick the delete button, confirm in the dialog
Toggle fullscreenClick the fullscreen button to enter/exit immersive mode
Clear searchClick the X button in the search input
Clear status filterClick the X on individual filter badges or use "Clear All"

Status Types

StatusColorDescription
PlanningVioletSession is in planning phase
In ProgressAmberSession is actively being worked on
CompletedGreenSession has been completed
PausedSlateSession is paused
ArchivedGraySession is archived

Session Detail Page

Location: ccw/frontend/src/pages/SessionDetailPage.tsx

The session detail page provides a comprehensive view of a single session with tabbed content.

Tabs

TabContentAlways Shown
TasksList of all tasks with statusYes (with badge count)
ContextSession context dataConditional
SummarySession summaryConditional
Impl PlanImplementation planConditional
ConflictConflict resolutionConditional
ReviewReview contentOnly if has_review or review exists

Info Bar

Displays created/updated dates and task progress (completed/total tasks).

Task Drawer

Click any task to open a slide-over drawer with full task details.


Components Reference

Main Components

ComponentLocationPurpose
SessionsPage@/pages/SessionsPage.tsxMain sessions list page
SessionDetailPage@/pages/SessionDetailPage.tsxSession detail with tabs
SessionCard@/components/shared/SessionCard.tsxIndividual session display with actions
SessionCardSkeleton@/components/shared/SessionCard.tsxLoading placeholder
TabsNavigation@/components/ui/TabsNavigation.tsxTab switcher component
TaskListTab@/pages/session-detail/TaskListTab.tsxTasks list tab content
TaskDrawer@/components/shared/TaskDrawer.tsxTask detail slide-over

State Management

  • Local state (SessionsPage):

    • locationFilter: 'all' | 'active' | 'archived'
    • searchQuery: string
    • statusFilter: SessionMetadata['status'][]
    • deleteDialogOpen: boolean
    • isImmersiveMode: boolean (from global store)
  • Local state (SessionDetailPage):

    • activeTab: TabValue
    • selectedTask: TaskData | null
  • Custom hooks:

    • useSessions - Sessions CRUD with filtering
    • useArchiveSession - Archive session mutation
    • useDeleteSession - Delete session mutation
    • useSessionDetail - Session detail data fetch

Configuration

No configuration required. Sessions are automatically fetched from the backend.

Filter Object Structure

typescript
interface SessionsFilter {
  location?: 'all' | 'active' | 'archived';
  search?: string;
  status?: SessionMetadata['status'][];
}

Released under the MIT License.