- 30 May, 2025 10 commits
-
-
✨ Previously, the "thinking" indicator and loading icon would only disappear after the entire message generation was complete, which created a poor user experience where users had to wait for the full response to see that the reasoning phase had finished. Changes made: - Add `isThinkingComplete` field to independently track reasoning state - Update streaming logic to mark thinking complete when content starts flowing - Detect closed `<think>` tags to mark reasoning completion - Modify MessageContent component to use independent thinking state - Update "思考中..." text and loading icon display conditions - Ensure thinking state is properly set in all completion scenarios (non-stream, errors, manual stop) Now the thinking section immediately shows as complete when reasoning ends, rather than waiting for the entire message to finish, providing much better real-time feedback to users. Files modified: - web/src/hooks/useApiRequest.js - web/src/components/playground/MessageContent.js - web/src/utils/messageUtils.js
Apple\Apple committed -
✨ Update tooltip messages from "正在生成中,请稍候..." to "操作暂时被禁用" in MessageActions component to better reflect that actions can be disabled during both message generation and editing states. Changes: - Replace specific "generating" message with generic "temporarily disabled" message - Applies to retry, edit, role toggle, and delete action tooltips - Provides more accurate user feedback for disabled states Files modified: - web/src/components/playground/MessageActions.js
Apple\Apple committed -
⚡ - Cache initial config using useRef to prevent repeated loadConfig() calls - Fix useEffect dependencies to only trigger on actual config changes - Modify debouncedSaveConfig dependency from function reference to actual config values - Update handleConfigReset to use DEFAULT_CONFIG directly instead of reloading - Prevent excessive console logging during chat interactions and frequent re-renders This resolves the issue where console was flooded with: "配置已从本地存储加载" and "配置已保存到本地存储" messages, especially during active chat sessions where logs appeared every second. Fixes: Frequent config load/save operations causing performance issues
Apple\Apple committed -
♻ Completely restructured the Playground component from a 1437-line monolith into a maintainable, modular architecture with 62.4% code reduction (540 lines). **Key Improvements:** - **Modular Architecture**: Extracted business logic into separate utility files - `utils/constants.js` - Centralized constant management - `utils/messageUtils.js` - Message processing utilities - `utils/apiUtils.js` - API-related helper functions - **Custom Hooks**: Created specialized hooks for better state management - `usePlaygroundState.js` - Centralized state management - `useMessageActions.js` - Message operation handlers - `useApiRequest.js` - API request management - **Code Quality**: Applied SOLID principles and functional programming patterns - **Performance**: Optimized re-renders with useCallback and proper dependency arrays - **Maintainability**: Implemented single responsibility principle and separation of concerns **Technical Achievements:** - Eliminated code duplication and redundancy - Replaced magic strings with typed constants - Extracted complex inline logic into pure functions - Improved error handling and API response processing - Enhanced code readability and testability **Breaking Changes:** None - All existing functionality preserved This refactor transforms the codebase into enterprise-grade quality following React best practices and modern development standards.
Apple\Apple committed -
✨ - Add role toggle button in MessageActions component for assistant/system messages - Implement handleRoleToggle function in Playground component to switch between assistant and system roles - Add visual distinction for system messages with orange badge indicator - Update roleInfo configuration to use consistent avatars for assistant and system roles - Add proper tooltip texts and visual feedback for role switching - Ensure role toggle is disabled during message generation to prevent conflicts This feature allows users to easily switch message roles between assistant and system, providing better control over conversation flow and message categorization in the playground interface.
Apple\Apple committed -
✨ - Add real-time request body preview that updates when parameters change - Implement pre-constructed payload generation for debugging without sending requests - Add support for image URLs in preview payload construction - Upgrade debug panel to card-style tabs with custom arrow navigation - Add collapsible functionality and dropdown menu for tab selection - Integrate image-enabled messages with proper multimodal content structure - Refactor tab state management with internal useState and external sync - Remove redundant status labels and clean up component structure - Set preview tab as default active tab for better UX - Maintain backward compatibility with existing debug functionality This enhancement significantly improves the debugging experience by allowing developers to see exactly what request will be sent before actually sending it, with real-time updates as they adjust parameters, models, or image settings.
Apple\Apple committed -
✨ Add a toggle switch to enable/disable image uploads in the playground, with automatic disabling after message sending to prevent accidental image inclusion in subsequent messages. Changes: - Add `imageEnabled` field to default configuration with false as default - Enhance ImageUrlInput component with enable/disable toggle switch - Update UI to show disabled state with opacity and color changes - Modify message sending logic to only include images when enabled - Implement auto-disable functionality after message is sent - Update SettingsPanel to pass through new imageEnabled props - Maintain backward compatibility with existing configurations User Experience: - Images are disabled by default for privacy and intentional usage - Users must explicitly enable image uploads before adding URLs - After sending a message with images, the feature auto-disables - Clear visual feedback shows current enabled/disabled state - Manual control allows users to re-enable when needed This improves user control over multimodal conversations and prevents unintentional image sharing in follow-up messages.
Apple\Apple committed -
🎨 Apple\Apple committed -
🐛 Fix TypeError when processing multimodal messages containing both text and images. The error "textContent.text.trim is not a function" occurred when textContent was null or textContent.text was not a string type. Changes: - Add comprehensive type checking for textContent.text access - Implement getTextContent() utility function for unified content extraction - Enhance error handling to support multimodal content display - Fix message copy functionality to handle array-format content - Improve message reset functionality to extract text content for retry - Add user-friendly warnings when copying messages without text content Technical improvements: - Validate textContent existence and text property type before calling trim() - Extract text content from multimodal messages for operations like copy/retry - Maintain backward compatibility with string-format content - Preserve all existing functionality while adding robust error handling Fixes issues with: - Image + text message processing - Message copying from multimodal content - Message retry with image attachments - Error display for complex message formats This ensures the playground component handles multimodal content gracefully without breaking existing text-only message functionality.
Apple\Apple committed -
🎨 🎨 refactor(playground): Refactor the structure of the playground and implement responsive design adaptationApple\Apple committed
-
- 29 May, 2025 7 commits
-
-
-
Apple\Apple committed
-
🔖 Apple\Apple committed -
CaIon committed
-
CaIon committed
-
🛠 BREAKING CHANGE: Refactor message stream processing and think tag handling logic - Improve automatic collapse behavior of reasoning panel - Collapse panel immediately after reasoning content completion - Add detection for complete think tag pairs - Remove dependency on full content completion - Enhance think tag processing - Unify tag handling logic across stream and stop states - Add robust handling for unclosed think tags - Prevent markdown rendering errors from malformed tags - Simplify state management - Reduce complexity in collapse condition checks - Remove redundant state transitions - Improve code readability by removing unnecessary comments This commit ensures a more stable and predictable behavior in the chat interface, particularly in handling streaming responses and reasoning content display.
Apple\Apple committed -
🐛 - Modified the `renderCustomChatContent` function to strip `<think>` and `</think>` tags from `finalExtractedThinkingContent` before passing it to the `MarkdownRender` component. This resolves potential parsing errors caused by unclosed or malformed tags. - Added a conditional check to ensure that the thinking process block is only rendered if `finalExtractedThinkingContent` has actual content and the section is expanded, improving rendering stability.
Apple\Apple committed
-
- 28 May, 2025 13 commits
-
-
This commit significantly refactors the handling of <think> tags within the Playground component to improve robustness, prevent Markdown rendering errors, and ensure accurate separation of reasoning and displayable content. Key changes include: - Modified `handleNonStreamRequest`, `onStopGenerator`, and `renderCustomChatContent` for more resilient <think> tag parsing. - Implemented logic to correctly extract content from fully paired `<think>...</think>` tags. - Added handling for unclosed `<think>` tags, particularly relevant during streaming responses, to capture ongoing thought processes. - Ensured `reasoningContent` is accurately populated from all sources (API, paired tags, and unclosed streaming tags). - Thoroughly sanitized the final `currentDisplayableFinalContent` to remove all residual `<think>` and `</think>` string instances, preventing issues with the Markdown renderer. - Corrected the usage of `thinkTagRegex.lastIndex = 0;` to ensure proper regex state resetting before each use in loops. Additionally, numerous explanatory comments detailing the "how" of the code (rather than the "why") have been removed to improve code readability and reduce noise.
Apple\Apple committed -
Apple\Apple committed
-
Apple\Apple committed
-
✨ - Add message operations (copy, retry, delete) with tooltips - Improve thinking chain processing and display logic - Enhance error handling and debug information presentation - Optimize UI layout and responsive design - Fix height calculations for better viewport usage - Improve mobile view adaptability - Add comprehensive error feedback for message operations - Implement fallback clipboard functionality - Refine debug panel with better error tracking - Add transition animations for better UX - Update styling with modern gradient backgrounds
Apple\Apple committed -
CaIon committed
-
creamlike1024 committed
-
CaIon committed
-
feat: Enhance image request validation in relay-image.go: set default model and size, improve error handling for size format, and ensure prompt and N parameters are validated correctly.
CaIon committed -
Apple\Apple committed
-
feat: chat/completion路由透传parallel_tool_calls参数
IcedTangerine committed -
IcedTangerine committed
-
fix: Vertex channel global region format
IcedTangerine committed -
fix: ali FetchUpstreamModels url
IcedTangerine committed
-
- 27 May, 2025 4 commits
-
-
🎨 Apple\Apple committed -
tbphp committed
-
skynono committed
-
wang.rong committed
-
- 26 May, 2025 6 commits
-
-
🛠 This commit improves the handling of message generation interruption in the playground chat interface, ensuring both content and thinking process are properly preserved. Key changes: - Preserve existing content when stopping message generation - Handle both direct reasoningContent and <think> tag formats - Extract and merge thinking process from unclosed <think> tags - Maintain consistent thinking chain format with separators - Auto-collapse reasoning panel after stopping for cleaner UI Technical details: - Modified onStopGenerator to properly handle SSE connection closure - Added regex pattern to extract thinking content from <think> tags - Implemented proper state management for incomplete messages - Ensured all content types are preserved in their respective fields This fix resolves the issue where thinking chain content would be lost when stopping message generation mid-stream.
Apple\Apple committed -
🔗 - Add click-to-navigate functionality on balance cards in both Detail and TokensTable components - Implement navigation to '/console/topup' when clicking on current balance - Add useNavigate hook and necessary imports - Keep consistent navigation behavior across components Components affected: - web/src/pages/Detail/index.js - web/src/components/TokensTable.js
Apple\Apple committed -
🌐 This commit introduces the following changes: - Add i18n support to the Loading component - Import useTranslation hook from react-i18next - Replace hardcoded Chinese text with translation keys - Support dynamic content interpolation for loading prompts - Use {{name}} variable in translation template Technical details: - Added: import { useTranslation } from 'react-i18next' - Modified: Loading text from static Chinese to i18n keys - Translation keys added: - "加载中..." - "加载{{name}}中..." File changed: web/src/components/Loading.jsApple\Apple committed -
✨ This commit introduces the following changes: - Create a reusable NoticeModal component to handle system announcements - Extract notice functionality from Home and HeaderBar components - Add loading and empty states using Semi UI illustrations - Implement "close for today" feature with localStorage - Support both light and dark mode for empty state illustrations - Add proper error handling and loading states - Improve code reusability and maintainability Breaking changes: None Related components: HeaderBar.js, Home/index.js, NoticeModal.js
Apple\Apple committed -
🎨 Apple\Apple committed -
🎨 Apple\Apple committed
-