1. 02 Jun, 2025 12 commits
  2. 01 Jun, 2025 15 commits
    • 🐛 fix(playground): ensure proper streaming updates & safeguard message handling · 890c953f
      Summary
      This commit addresses two critical issues affecting the real-time chat experience in the Playground:
      
      1. Optimized re-rendering of reasoning content
         • Added `reasoningContent` to the comparison function of `OptimizedMessageContent` (`web/src/components/playground/OptimizedComponents.js`).
         • Ensures the component re-renders while reasoning text streams, resolving the bug where only the first characters (“好,”) were shown until the stream finished.
      
      2. Defensive checks for SSE message updates
         • Added early-return guards in `streamMessageUpdate` (`web/src/hooks/useApiRequest.js`).
         • Skips updates when `lastMessage` is undefined or the last message isn’t from the assistant, preventing `TypeError: Cannot read properties of undefined (reading 'status')` during rapid SSE responses.
      
      Impact
      • Real-time reasoning content now appears progressively, enhancing user feedback.
      • Eliminates runtime crashes caused by undefined message references, improving overall stability.
      Apple\Apple committed
    • ️ refactor(playground): eliminate code duplication in thinking content rendering · ea632c6f
      - 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
    • 💄 feat(playground): unify SettingsPanel header design with DebugPanel · e30eca5c
      - 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
    • ️ refactor(StyleContext): modernize context architecture and eliminate route transition flicker · a1918aa6
      ## 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
    • 💄 style(ui): some style adjustments · d15e53ed
      Apple\Apple committed
    • feat: remove image upload limit and improve scrollbar styling · 05396dae
      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
    • 🎨 ui(playground): reorganize config manager layout to place reset button with timestamp · 44886938
      - 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
    • 🐛 fix: resolve duplicate toast notifications when toggling message roles · d01054e2
      - 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
    • 💄 style(ui): hide scrollbars across chat interface and request editor · 309f3b9f
      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 switching not updating UI immediately in playground · ec4dbcd7
      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
    • feat: Add custom request body editor with persistent message storage · 77157da8
      - 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
    • 🌏i18n: Siderbar `Playground` · aa044d82
      Apple\Apple committed
  3. 31 May, 2025 11 commits
  4. 30 May, 2025 2 commits
    • 🎨 feat(ui): Update thinking section design to match EditChannel header card style · 1fbd107b
      - 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
    • 🎨 style(MessageContent): unify thinking section color scheme with PersonalSetting · f8b65260
      - 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