Story 20: New Session button to clear chat history

- Added 'New Session' button in header with confirmation dialog
- Clears frontend messages, streaming content, and loading state
- Button has subtle styling with hover effects
- Preserves project path, model selection, and tool settings
- Backend context automatically cleared (no server-side history)
- Fixed build errors by removing unused tokio watch channel
- All quality checks passing (TypeScript, Biome, Clippy, builds)

Tested and verified:
- Button appears in header near model controls
- Confirmation dialog prevents accidental clearing
- Messages clear immediately after confirmation
- Input remains ready for new conversation
- Settings preserved across session clears
This commit is contained in:
Dave
2025-12-27 17:01:55 +00:00
parent 64d1b788be
commit b3dd5f5670
7 changed files with 131 additions and 43 deletions

View File

@@ -1,35 +0,0 @@
# Story 20: Start New Session / Clear Chat History
## User Story
As a user, I want to be able to start a fresh conversation without restarting the entire application, so that I can begin a new task with clean context while keeping the same project open.
## Acceptance Criteria
- [ ] There is a visible "New Session" or "Clear Chat" button in the UI
- [ ] Clicking the button clears all messages from the chat history
- [ ] The input field remains enabled and ready for a new message
- [ ] The button asks for confirmation before clearing (to prevent accidental data loss)
- [ ] After clearing, the chat shows an empty state or welcome message
- [ ] The project path and model settings are preserved (only messages are cleared)
- [ ] Any ongoing streaming or tool execution is cancelled before clearing
- [ ] The action is immediate and provides visual feedback
## Out of Scope
- Saving/exporting previous sessions before clearing
- Multiple concurrent chat sessions or tabs
- Undo functionality after clearing
- Automatic session management or limits
- Session history or recovery
## Technical Notes
- Frontend state (`messages`) needs to be cleared
- Backend may need to be notified to cancel any in-flight operations
- Should integrate with the cancellation mechanism from Story 13 (if implemented)
- Button should be placed in the header area near the model selector
- Consider using a modal dialog for confirmation
- State: `setMessages([])` to clear the array
## Design Considerations
- Button placement: Header area (top right or near model controls)
- Button style: Secondary/subtle to avoid accidental clicks
- Confirmation dialog: "Are you sure? This will clear all messages."
- Icon suggestion: 🔄 or "New" text label

View File

@@ -0,0 +1,39 @@
# Story 20: Start New Session / Clear Chat History
## User Story
As a user, I want to be able to start a fresh conversation without restarting the entire application, so that I can begin a new task with completely clean context (both frontend and backend) while keeping the same project open.
## Acceptance Criteria
- [x] There is a visible "New Session" or "Clear Chat" button in the UI
- [x] Clicking the button clears all messages from the chat history (frontend)
- [x] The backend conversation context is also cleared (no message history retained)
- [x] The input field remains enabled and ready for a new message
- [x] The button asks for confirmation before clearing (to prevent accidental data loss)
- [x] After clearing, the chat shows an empty state or welcome message
- [x] The project path and model settings are preserved (only messages are cleared)
- [x] Any ongoing streaming or tool execution is cancelled before clearing
- [x] The action is immediate and provides visual feedback
## Out of Scope
- Saving/exporting previous sessions before clearing
- Multiple concurrent chat sessions or tabs
- Undo functionality after clearing
- Automatic session management or limits
- Session history or recovery
## Technical Notes
- Frontend state (`messages` and `streamingContent`) needs to be cleared
- Backend conversation history must be cleared (no retained context from previous messages)
- Backend may need a `clear_session` or `reset_context` command
- Cancel any in-flight operations before clearing
- Should integrate with the cancellation mechanism from Story 13 (if implemented)
- Button should be placed in the header area near the model selector
- Consider using a modal dialog for confirmation
- State: `setMessages([])` to clear the frontend array
- Backend: Clear the message history that gets sent to the LLM
## Design Considerations
- Button placement: Header area (top right or near model controls)
- Button style: Secondary/subtle to avoid accidental clicks
- Confirmation dialog: "Are you sure? This will clear all messages and reset the conversation context."
- Icon suggestion: 🔄 or "New" text label