- 01 Jun, 2025 12 commits
-
-
♻ - Remove duplicate thinking content rendering logic from MessageContent component - Import and utilize ThinkingContent component for consistent thinking display - Clean up unused icon imports (ChevronRight, ChevronUp, Brain) - Consolidate "思考中..." header text logic into single component - Reduce code duplication by ~70 lines while maintaining all functionality - Improve component separation of concerns and maintainability The MessageContent component now delegates thinking content rendering to the dedicated ThinkingContent component, eliminating the previously duplicated UI logic and state management for thinking processes.
Apple\Apple committed -
💄 - Add consistent title section with gradient icon and heading - Include close button in mobile view for better UX consistency - Standardize mobile and desktop ConfigManager styling - Adjust layout structure and padding for visual alignment - Use Settings icon with purple-to-pink gradient to match design system This change ensures both SettingsPanel and DebugPanel have identical header layouts and interaction patterns across all screen sizes.
Apple\Apple committed -
♻ ## Breaking Changes - Remove backward compatibility layer for old action types - StyleContext is no longer exported, use useStyle hook instead ## Major Improvements - **Architecture**: Replace useState with useReducer for complex state management - **Performance**: Add debounced resize handling and batch updates via BATCH_UPDATE action - **DX**: Export useStyle hook and styleActions for type-safe usage - **Memory**: Use useMemo to cache context value and prevent unnecessary re-renders ## Bug Fixes - **UI**: Eliminate padding flicker when navigating to /console/chat* and /console/playground routes - **Logic**: Remove redundant localStorage operations and state synchronization ## Implementation Details - Define ACTION_TYPES and ROUTE_PATTERNS constants for better maintainability - Add comprehensive JSDoc documentation for all functions - Extract custom hooks: useWindowResize, useRouteChange, useMobileSiderAutoHide - Calculate shouldInnerPadding directly in PageLayout based on pathname to prevent async updates - Integrate localStorage saving logic into SET_SIDER_COLLAPSED reducer case - Remove SET_INNER_PADDING action as it's no longer needed ## Updated Components - PageLayout.js: Direct padding calculation based on route - HeaderBar.js: Use new useStyle hook and styleActions - SiderBar.js: Remove redundant localStorage calls - LogsTable.js: Remove unused StyleContext import - Playground/index.js: Migrate to new API ## Performance Impact - Reduced component re-renders through optimized context structure - Eliminated unnecessary effect dependencies and state updates - Improved route transition smoothness with synchronous padding calculation
Apple\Apple committed -
💄 Apple\Apple committed -
✨ Remove the 5-image upload restriction in playground and enhance UI consistency Changes: - Remove 5-image limit constraint from ImageUrlInput component - Update hint text to remove "maximum 5 images" references - Add custom scrollbar styling for image list to match site-wide design - Apply consistent thin scrollbar (6px width) with Semi Design color variables - Maintain hover effects and rounded corners for better UX Breaking Changes: None Files modified: - web/src/components/playground/ImageUrlInput.js - web/src/index.css This change allows users to upload unlimited images in playground mode while maintaining visual consistency across the application's scrollable elements.
Apple\Apple committed -
🎨 - Move reset settings button to the same row as the last modified timestamp - Use flexbox layout with justify-between to align timestamp left and reset button right - Keep export and import buttons on the separate row below - Improve space utilization and visual hierarchy in the settings panel This change enhances the user interface by creating a more compact and intuitive layout for the configuration management controls in the playground component.
Apple\Apple committed -
🐛 - Remove duplicate onRoleToggle prop passing to ChatArea component in Playground/index.js - Move Toast notification outside setMessage callback in useMessageActions hook - Prevent multiple event bindings that caused repeated role switch notifications - Add early return validation for role toggle eligibility This fixes the issue where users would see multiple success toasts when switching between Assistant and System roles in the chat interface. Files changed: - web/src/pages/Playground/index.js - web/src/hooks/useMessageActions.js
Apple\Apple committed -
♻ Apple\Apple committed -
💄 Hide y-axis scrollbars to provide a cleaner UI experience while maintaining scroll functionality through mouse wheel and keyboard navigation. Changes include: - Hide scrollbars in CustomRequestEditor TextArea component - Hide scrollbars in chat container and all related chat components - Hide scrollbars in thinking content areas - Add cross-browser compatibility for scrollbar hiding - Maintain scroll functionality while improving visual aesthetics Components affected: - CustomRequestEditor.js: Added custom-request-textarea class - index.css: Updated scrollbar styles for chat, thinking, and editor areas The interface now provides a more streamlined appearance consistent with modern UI design patterns while preserving all interactive capabilities.
Apple\Apple committed -
🐛 Fix role toggle functionality where switching message roles (assistant/system) did not update the UI immediately and required page refresh to see changes. Changes: - Add message.role comparison in OptimizedMessageContent memo function - Add message.role comparison in OptimizedMessageActions memo function The issue was caused by React.memo optimization that wasn't tracking role changes, preventing re-renders when only the message role property changed. Now role switches are reflected immediately in both message content display and action button states. Fixes: Role switching requires page refresh to display correctly
Apple\Apple committed -
✨ - Add CustomRequestEditor component with JSON validation and real-time formatting - Implement bidirectional sync between chat messages and custom request body - Add persistent local storage for chat messages (separate from config) - Remove redundant System Prompt field in custom mode - Refactor configuration storage to separate messages and settings New Features: • Custom request body mode with JSON editor and syntax highlighting • Real-time bidirectional synchronization between chat UI and custom request body • Persistent message storage that survives page refresh • Enhanced configuration export/import including message data • Improved parameter organization with collapsible sections Technical Changes: • Add loadMessages/saveMessages functions in configStorage • Update usePlaygroundState hook to handle message persistence • Refactor SettingsPanel to remove System Prompt in custom mode • Add STORAGE_KEYS constants for better storage key management • Implement debounced auto-save for both config and messages • Add hash-based change detection to prevent unnecessary updates UI/UX Improvements: • Disabled state styling for parameters in custom mode • Warning banners and visual feedback for mode switching • Mobile-responsive design for custom request editor • Consistent styling with existing design system
Apple\Apple committed -
🌏 Apple\Apple committed
-
- 31 May, 2025 10 commits
-
-
Apple\Apple committed
-
CaIon committed
-
Apple\Apple committed
-
fix: 流式请求ping
Calcium-Ion committed -
creamlike1024 committed
-
Apple\Apple committed
-
feat: streaming response for tts
Calcium-Ion committed -
Add `ERROR_LOG_ENABLED` description in README
Calcium-Ion committed -
Fix: Gemini2.5pro ThinkingConfig
Calcium-Ion committed -
xqx121 committed
-
- 30 May, 2025 18 commits
-
-
🎨 - Replace gradient background with purple theme matching EditChannel cards - Add decorative circle elements for visual consistency - Update all icons and text to white color for better contrast - Apply inline styles to ensure proper color rendering - Maintain hover effects with adjusted opacity values This change creates visual consistency across the application by adopting the same modern gradient design pattern used in EditChannel header cards.
Apple\Apple committed -
🎨 - Replace pink-purple gradient with indigo-purple gradient to match PersonalSetting.js color scheme - Update icon container gradient from purple-indigo to indigo-purple for consistency - Enhance shadow effects from shadow-sm to shadow-lg to align with card design standards - Improve hover effects with refined opacity and smoother transitions (duration-300) - Increase content background opacity from 70% to 80% for better readability - Update scrollbar color to purple theme (rgba(139, 92, 246, 0.3)) - Standardize border radius to rounded-xl for unified styling - Apply consistent styling to "thinking in progress" state with matching gradient background This change ensures visual consistency across the application by adopting the same purple-blue color palette used in PersonalSetting component, creating a more cohesive user experience.
Apple\Apple committed -
🐛 - Fix thinking content area scroll functionality in MessageContent.js * Replace max-h-50 with explicit maxHeight style (200px) * Add thinking-content-scroll CSS class for proper scrollbar styling * Ensure scrollbars are visible when content exceeds container height - Add thinking-content-scroll CSS class in index.css * Define webkit scrollbar styles with proper dimensions (6px) * Add hover effects and cross-browser compatibility * Support both webkit and Firefox scrollbar styling - Remove unused CSS classes to improve code cleanliness * Remove .hide-on-mobile class (no usage found in codebase) * Remove .debug-code class (no longer needed) - Improve user experience for viewing lengthy thinking content * Users can now properly scroll through AI reasoning content * Maintains content visibility with appropriate height constraints Resolves issue where thinking section had max height but no scrolling capability.
Apple\Apple committed -
⚡ - Add intelligent content truncation for payloads over 50K characters - Implement tiered performance handling based on content size - Use useMemo and useCallback for memory optimization and caching - Add progressive loading with async processing for very large content - Introduce performance warning indicators and user feedback - Create expand/collapse functionality with smooth animations - Skip syntax highlighting for extremely large content (>100K) - Add loading states and debounce handling for better UX - Display remaining content size indicators (e.g., +15K) - Implement chunk-based processing to prevent UI blocking This optimization ensures that even multi-megabyte JSON responses won't cause page freezing or performance degradation in the debug panel, while maintaining full functionality for regular-sized content.
Apple\Apple committed -
🐛 - Change response content language from 'javascript' to 'json' for proper highlighting - Improve automatic JSON detection to handle both objects and arrays - Add intelligent content type detection based on string patterns - Include development environment debug logging for troubleshooting - Ensure all API responses display with correct JSON syntax coloring This fix resolves the issue where API response data was not properly syntax highlighted, ensuring consistent JSON formatting across all debug panel tabs (preview, request, and response).
Apple\Apple committed -
✨ - Create new CodeViewer component with VS Code dark theme styling - Implement custom JSON syntax highlighting with proper color coding - Add improved copy functionality with hover effects and user feedback - Refactor DebugPanel to use the new CodeViewer component - Apply dark background (#1e1e1e) with syntax colors matching VS Code - Enhance UX with floating copy button and responsive design - Support automatic JSON formatting and parsing - Maintain compatibility with existing Semi Design components The debug panel now displays preview requests, actual requests, and responses in a professional code editor style, improving readability and developer experience in the playground interface.
Apple\Apple committed -
✨ - Replace Semi UI's MarkdownRender with react-markdown library for better performance and features - Add comprehensive markdown rendering support including: * Math formulas with KaTeX * Code syntax highlighting with rehype-highlight * Mermaid diagrams support * GitHub Flavored Markdown (tables, task lists, etc.) * HTML preview for code blocks * Media file support (audio/video) - Create new MarkdownRenderer component with enhanced features: * Copy code button with hover effects * Code folding for long code blocks * Responsive design for mobile devices - Add white text styling for user messages to improve readability on blue backgrounds - Update all components using markdown rendering: * MessageContent.js - playground chat messages * About/index.js - about page content * Home/index.js - home page content * NoticeModal.js - system notice modal * OtherSetting.js - settings page - Install new dependencies: react-markdown, remark-math, remark-breaks, remark-gfm, rehype-katex, rehype-highlight, katex, mermaid, use-debounce, clsx - Add comprehensive CSS styles in markdown.css for better theming and user experience - Remove unused imports and optimize component imports Breaking changes: None - maintains backward compatibility with existing markdown content
Apple\Apple committed -
♻ - Extract common `applyAutoCollapseLogic` function for reasoning panel collapse behavior - Consolidate duplicated auto-collapse logic across multiple functions - Simplify conditional expressions using logical OR operator - Replace repetitive property assignments with object spread syntax - Update dependency arrays to include new shared function - Ensure consistent behavior across stream/non-stream/error scenarios This refactoring improves code maintainability by following DRY principles and centralizing the auto-collapse logic in a single reusable function. All message handling functions now use consistent logic for determining when to auto-collapse the reasoning panel. Benefits: - Reduced code duplication from ~20 lines to 6 lines per function - Single source of truth for auto-collapse behavior - Improved readability and maintainability - Easier to modify collapse logic in the future Files changed: - web/src/hooks/useApiRequest.js: Refactored message handling functions
Apple\Apple committed -
🐛 - Add `hasAutoCollapsed` flag to track auto-collapse state - Modify reasoning panel to auto-collapse only once after thinking completion - Allow users to manually toggle reasoning panel after auto-collapse - Update message creation, streaming updates, and completion handlers - Ensure consistent behavior across stream/non-stream requests and error cases Previously, the reasoning/thinking panel would auto-collapse every time the AI completed its thinking process, preventing users from reopening it to review the reasoning content. Now it auto-collapses only once when thinking is complete, then allows full user control. Files changed: - web/src/hooks/useApiRequest.js: Updated all message handling functions - web/src/utils/messageUtils.js: Added hasAutoCollapsed to initial state
Apple\Apple committed -
✨ 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
-