Conversation
…ate handling - Moved model selector UI from `MessageInput` to `ChatHeader` for better organization. - Simplified `MessageInput`, removing unused props like `model` and `onModelChange`. - Added `onNewChat` callback for improved reusability across components. - Enhanced accessibility and styling for `IconSelect` component.
- Adjusted layout logic to dynamically adapt widths based on user and editing states. - Simplified editing buttons, switching "Save" and "Cancel" behavior for better clarity and interaction flow. - Improved style consistency for editing state controls.
…ence - Implemented `migrate` script for managing database schema changes via CLI. - Added new columns for conversation persistence settings: `streaming_enabled`, `tools_enabled`, `research_mode`, `quality_level`, `reasoning_effort`, and `verbosity`. - Integrated conversation metadata updates across frontend and backend for syncing settings. - Refactored database migration logic using `better-sqlite3-migrations` for maintainability. - Updated API and UI to support new persistence fields and ensure user preferences are applied seamlessly.
…atV2 - Fully replaced `Chat` component with `ChatV2` for improved architecture and maintainability. - Removed `ChatContext` and migrated state handling to hooks-based approach in `useChatState`. - Updated all relevant components, tests, and pages to use `ChatV2`. - Enhanced test utilities to wrap components with required providers.
- Updated `useChatState` to dispatch actions for handling conversation-level settings: `model`, `shouldStream`, `useTools`, `researchMode`, `qualityLevel`, `reasoningEffort`, and `verbosity`. - Enhanced backend persistence logic to support OpenAI-compatible fields and derive flags dynamically (`stream` -> `streamingEnabled`, `tools` -> `toolsEnabled`). - Improved syncing of user preferences between frontend and backend.
…amline Docker setup - Introduced `entrypoint.sh` scripts for both frontend and backend to handle npm dependency installation and command execution. - Updated frontend and backend Dockerfiles to use the new entrypoint scripts, simplifying the container initialization process. - Refactored `useChatStream` lifecycle methods by centralizing operation helpers and improving code reusability.
- Updated frontend and backend to include `reasoning_effort` and `verbosity` parameters only for gpt-5* models. - Added validation logic in OpenAI proxy to enforce allowed values for these parameters. - Ensured other models exclude reasoning controls to prevent invalid requests. - Enhanced orchestrators to conditionally include reasoning controls for gpt-5* models only.
…e management - Introduced `RightSidebar` component to allow users to input and update system prompts for the current session. - Enhanced `useChatState` to include `systemPrompt`, dispatch actions, and manage session-level system prompt state. - Updated `ChatV2` to integrate the new `RightSidebar` component.
…and tool handling - Added `setupStreamingHeaders` to ensure proper headers are set dynamically for streaming responses. - Implemented upstream error checks and added timeout handling to avoid hanging in streams. - Updated iterative orchestrators to include timeouts, error handling, and cleanup logic for robustness. - Introduced extended HTTP client request examples with enhanced tool definitions and usage.
- Replaced duplicated `fetch` invocations with a shared `createOpenAIRequest` utility. - Removed redundant imports and references to `node-fetch`. - Simplified error handling for upstream requests and improved readability. - Standardized persistence and response processing across orchestrators for consistency.
…n, orchestration, and error handling - Extracted reasoning control validation and normalization into a dedicated helper function. - Centralized upstream error handling into `readUpstreamError` utility for better reuse and readability. - Refactored body sanitization and flag extraction into modular functions. - Simplified orchestration logic by introducing mode-based handlers for `tools` and `plain` requests. - Improved fallback safety and error responses in unsupported modes.
- Refined `isSecure` logic to handle `x-forwarded-proto` more robustly. - Added safeguards to ensure `res.setHeader` is invoked only when valid.
- Introduced modular APIs in `frontend/lib/chat` with extracted types, client manager, and utilities. - Added structured conversation management via `ConversationManager` and tool integrations. - Ensured backward compatibility with legacy function and type exports. - Streamlined code organization with dedicated modules for tools, conversations, and messages. - Simplified `ChatClient` with reusable streaming and non-streaming logic.
… tool and conversation management - Replaced legacy functions with modular classes `ChatClient`, `ToolsClient`, and `ConversationManager`. - Updated hooks and tests to use new API structure for improved maintainability. - Deprecated legacy methods (`sendChat`, `getToolSpecs`, etc.) in favor of classes. - Centralized API calls for tools and conversations to enable unified handling and flexibility.
…for ChatV2 migration - Replaced legacy `fetch` mocking with `jest` mocks in iterative orchestration tests. - Updated tests to utilize mocked `sendChat` and `getToolSpecs` APIs. - Migrated component tests to use `ChatV2` instead of `Chat`. - Enhanced mock responses for detailed message and tool status handling. - Included additional Jest DOM types in `tsconfig.json` for improved type support.
- Refactored tool call handling with `upsertToolCall` function for deduplication and efficient updates. - Updated `SYNC_ASSISTANT` to preserve non-content fields like `tool_calls` during synchronization. - Centralized tool call and output dispatching logic to avoid duplicates from local state snapshots. - Added `ToolSpec` typing for available tools to improve type safety and clarity.
- Introduced pluggable provider configuration with OpenAI as the default for backward compatibility. - Added flexibility in provider selection via new env vars (`PROVIDER`, `PROVIDER_BASE_URL`, etc.). - Modularized provider-specific logic with a default registry, enabling model-specific features and custom configurations. - Refactored reasoning control checks to dynamically validate against provider capabilities. - Streamlined proxy logic by replacing hardcoded OpenAI calls with provider-based requests. - Updated `.env.example` and `README` to reflect multi-provider setup.
- Added `SettingsModal` component to manage conversation-level settings. - Integrated settings toggle in `ChatHeader` with `Settings` icon. - Updated `ChatV2` to include settings modal for model, quality, tools, and stream configurations.
- Added `providers` table with fields for managing provider-specific settings (e.g., name, type, API key, metadata). - Included migration logic for creating, indexing, and dropping the table. - Enhanced future scalability by introducing support for multi-provider handling in the database schema.
- Introduced backend API and DAO for CRUD operations on providers (`/v1/providers`). - Added environment-based provider seeding for default configurations. - Integrated multi-provider selection and customization in the `SettingsModal`. - Enhanced settings modal with options for providers, models, tools, and quality levels. - Updated backend routing and frontend UI to handle dynamic provider configurations.
- Updated migration logic to conditionally add new columns only if they do not already exist. - Ensures smooth execution of repeated migrations without errors or redundant operations.
- Removed unused icons and redundant settings. - Streamlined layout by reorganizing provider and editor sections. - Improved readability and scalability with updated grid and flex layouts. - Enhanced modal width configuration for better usability.
- Introduced reusable `TabbedSelect` UI component for grouped options with tabs. - Replaced `IconSelect` in `ChatHeader` with `TabbedSelect`, enabling multi-provider model selection. - Added API endpoint to fetch models by provider (`/v1/providers/:id/models`) in the backend. - Enhanced frontend to dynamically load provider models through the backend proxy. - Improved fallback handling for default model options when no providers are available.
…API key - Replaced `getProviderById` with `getProviderByIdWithApiKey` in `/models` API route to include API key. - Added `getProviderByIdWithApiKey` function in the database module for server-side operations. - Created new request example for provider models in `models.http`.
- Introduced `ModelSelector` for improved model selection with favorites, recent models, and search functionality. - Replaced `IconSelect` and `TabbedSelect` with `ModelSelector` in `ChatHeader`. - Enhanced dropdown to support grouped providers and fallback options.
…support - Removed `researchMode` feature from frontend, backend, and API types, including tools and conversation management. - Added `providerId` support to enable user-driven provider selection for models. - Updated state management, components, and hooks to accommodate provider-specific logic. - Refactored default provider selection logic and removed `is_default` concept from the backend. - Improved API compatibility and streamlined data flow for provider-based model selection.
- Added state hydration on initial load based on `?c=` query parameter. - Implemented URL synchronization to reflect selected conversation. - Enhanced navigation handling with `useRouter`, `usePathname`, and `useSearchParams`. - Avoided redundant state updates with initialization guards.
- Removed outdated settings logic and unused props in `SettingsModal`. - Added functionality to test provider connections with new `/v1/providers/test` and `/v1/providers/:id/test` endpoints. - Enhanced `SettingsModal` with tab navigation, improved UI, and connection test results display. - Consolidated provider management logic for easier maintenance and better user feedback.
…vider settings - Replaced checkbox with accessible switch-based design in `Toggle` component. - Added `handleQuickToggle` logic for enabling/disabling providers with optimistic updates and error handling. - Integrated loading indicators and improved keyboard navigation for provider actions. - Enhanced UI consistency with updated styles and conditional states in `SettingsModal`.
- Updated spacing, borders, and shadows for a cleaner, more cohesive design across components. - Enhanced modal and sidebar visuals with subtle gradients and rounded elements. - Improved focus states, hover effects, and typography consistency in forms and buttons. - Applied pointer-events adjustments and fade effects for better user experience.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.