Skip to content

Conversation

@JegernOUTT
Copy link
Member

No description provided.

- Add trajectories API endpoints (list, get, save, delete) with SSE subscription
- Implement automatic title generation for chat trajectories via LLM
- Refactor chat state to support multiple concurrent threads with per-thread runtime state
- Update selectors to access thread-specific state by ID
- Add useTrajectoriesSubscription hook for real-time trajectory events
- Update test fixtures and mock handlers for trajectory operations
- Migrate chat form and story fixtures to new multi-thread state structure
- Add per-thread state tracking (streaming, waiting, confirmation) instead of global
- Implement open_thread_ids array to manage visible tabs vs background runtimes
- Add switchToThread action to switch between open tabs and auto-switch on confirmation
- Update setIsWaitingForResponse to accept {id, value} payload for per-thread control
- Add closeThread force flag to allow deletion of busy threads (e.g., on backend delete)
- Update restoreChat to preserve existing runtimes and re-add to open tabs
- Add auto-switch listener: when background thread needs confirmation, switch to it
- Update updateOpenThread to only sync metadata (title) not messages (avoid stale data)
- Add setThreadPauseReasons to also set streaming=false and confirmationStatus=false
- Update removeChatFromCache to check confirmation.pause before deleting
- Add selectThreadPause selector to check pause state
- Update Toolbar and HistoryItem to show spinner for both streaming and waiting states
- Update ChatForm to check pause state without streaming condition
- Update middleware to set waiting=true before continuing after tool confirmation
- Add error handling in reducer for rejected chatAskQuestionThunk
- Update useCompressChat and useSendChatRequest to use per-thread waiting state
- Update useTrajectoriesSubscription to force-delete on backend delete and sync only metadata
- Update version to 2.0.10-alpha.4
Preserve auto-generated titles in history when saving chats, and allow
backend-generated titles to sync even during active streaming. Restrict
other field updates to non-busy threads to avoid overwriting user changes.
- Fix abort handling: dispatch doneStreaming immediately on abort to prevent
  late cleanup from corrupting new requests
- Set waiting_for_response=true before async confirmation check to block
  duplicate senders during the async operation
- Re-check state after async operations to prevent stale state issues
- Exclude messages from backend updates to keep local runtime authoritative
- Remove duplicate tool auto-continue from useAutoSend (now single source
  of truth in middleware doneStreaming listener)
- Extract constant default values in selectors to prevent unnecessary object
  creation on each call (EMPTY_MESSAGES, EMPTY_QUEUED, etc.)
- Import ChatMessages and thread types for better type safety
- Add safety checks for incomplete tool calls after aborted streams
- Improve stream consumption abort handling with deduplication flag to prevent
  multiple onAbort callbacks
- Add abort signal checks between chunk processing to stop early on user abort
- Move UsageCounter to AgentCapabilities header and ChatForm
- Relocate MessageUsageInfo rendering to ChatContent message flow
- Remove LikeButton and SaveTrajectory functionality
- Simplify AssistantInput props by removing usage data
- Refactor UsageCounter with circular progress visualization
- Move ResendButton to ChatForm toolbar
- Remove trajectory save endpoint from router
- Clean up knowledge API and remove unused SaveTrajectoryResponse
- Update story fixtures to remove deprecated handlers
- Adjust component imports and dependencies across chat modules
Add logic to automatically close empty chat tabs when:
- Creating a new chat via onCreateNewChat
- Navigating to a different tab via goToTab

This improves UX by preventing accumulation of empty chat tabs in the
tab bar. Only tabs with no messages are closed automatically.
@JegernOUTT JegernOUTT merged commit 6a8d404 into dev Dec 23, 2025
7 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants