1. 30 May, 2025 8 commits
    • perf(playground): optimize config loading and saving to reduce console spam · 7e019db9
      - 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
    • ️ refactor(playground): major architectural overhaul and code optimization · 3cc232e6
      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
    • feat(playground): add role toggle feature for AI messages · 6ec7b67a
      - 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
    • feat: enhance debug panel with real-time preview and collapsible tabs · 75c448e5
      - 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
    • feat: add image upload toggle with auto-disable after sending · b5cc3177
      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
    • 🐛 fix(playground): improve multimodal content handling and error resilience · 8be6c835
      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… · 554ac319
      🎨 refactor(playground): Refactor the structure of the playground and implement responsive design adaptation
      Apple\Apple committed
  2. 29 May, 2025 7 commits
  3. 28 May, 2025 13 commits
  4. 27 May, 2025 4 commits
  5. 26 May, 2025 8 commits