Commit Graph

4350 Commits

Author SHA1 Message Date
MyPrototypeWhat
99962b740c feat: add EmojiAvatar component and update component exports
- Introduced a new EmojiAvatar component for enhanced avatar functionality.
- Updated index.ts to export the new EmojiAvatar alongside existing components.
- Removed the old display/EmojiAvatar component to streamline the codebase.
- Adjusted various components to utilize the new Avatar structure and styling.
2025-09-29 17:47:17 +08:00
MyPrototypeWhat
ef4bede062 feat: introduce DescriptionSwitch component and update component exports
- Added a new DescriptionSwitch component to enhance the Switch functionality with a description feature.
- Updated the exports in index.ts to include the new DescriptionSwitch alongside existing components.
- Refactored the SettingsTab to utilize DescriptionSwitch for improved UI consistency.
- Removed the InfoPopover component as part of the cleanup process.
2025-09-29 12:47:36 +08:00
Phantom
e6e1fb0404
refactor(button): migrate button from antd to heroui (#10292)
* fix(eslint): add Button to restricted antd imports

* feat(ui): add Button component with Storybook stories

Implement a reusable Button component wrapping HeroUIButton with proper TypeScript props.
Add comprehensive Storybook stories demonstrating all button variants, colors, sizes and states.

* refactor(components): update ActionIconButton implementation and usage

Replace onClick with onPress prop and move icon into icon prop
Update component to use @cherrystudio/ui Button instead of antd
Simplify props interface and add displayName

* refactor(ui): migrate antd buttons to @cherrystudio/ui components

update button components across multiple files to use @cherrystudio/ui's Button component
replace antd button props with equivalent @cherrystudio/ui props

* refactor(InputEmbeddingDimension): replace antd Button with custom Button component

Update the Button component to use the custom @cherrystudio/ui Button with updated props for better consistency and maintainability

* refactor(components): migrate buttons from antd to @cherrystudio/ui

Update button components in LocalBackupModals and LocalBackupManager to use @cherrystudio/ui instead of antd
Add flex styling to modal footers for better button alignment

* refactor(ProviderSetting): migrate Button components from antd to @cherrystudio/ui

Update Button components to use @cherrystudio/ui implementation with new props like variant, color, and startContent
Replace onClick handlers with onPress and adjust disabled states

* refactor(ui): migrate antd buttons to cherrystudio ui buttons

Update button components across multiple files to use @cherrystudio/ui Button instead of antd Button
Standardize button props and behavior while maintaining existing functionality

* refactor(NutstorePathSelector): update button props to use cherrystudio ui

Replace antd Button with cherrystudio ui Button component and update props

* refactor(S3BackupManager): migrate antd buttons to @cherrystudio/ui

Update button components from antd to @cherrystudio/ui library
Change button props to match new library's API (variant, color, onPress, etc)
Adjust table props for consistency with new component library

* refactor(TranslateButton): replace styled Button with cherrystudio Button component

The custom styled Button was replaced with the cherrystudio Button component to maintain consistency across the UI and reduce custom styling code. The functionality remains the same but uses the library's built-in props for styling.

* refactor(WebdavBackupManager): replace antd buttons with cherrystudio ui buttons

Update button components to use cherrystudio ui library for consistency

* refactor(ui): migrate buttons from antd to @cherrystudio/ui

Update button components across multiple editor components to use @cherrystudio/ui's Button component instead of antd's. This includes updating props like size, variant, and event handlers to match the new component's API.

* refactor(components): migrate buttons from antd to @cherrystudio/ui

Update button components in HtmlArtifactsCard and HtmlArtifactsPopup to use @cherrystudio/ui's Button component instead of antd's Button. This includes updating props like icon to startContent, onClick to onPress, and type to variant/color.

* refactor(ui): migrate button components from antd to hero ui

- replace antd Button with hero ui Button component
- update button props interface to extend hero ui props
- adjust button props in OAuthButton and MinappPopupContainer

* refactor(MultiSelectionPopup): migrate button components to @cherrystudio/ui

Update button props to match new component library requirements

* refactor(ApiKeyItem): migrate antd buttons to cherrystudio ui components

Update button components in ApiKeyItem to use cherrystudio ui library instead of antd

* refactor(ApiKeyListPopup): update button props to use new UI library syntax

Update button components to use the new syntax from @cherrystudio/ui library, replacing antd Button props with the new variant, color, and isDisabled props. Also adjust icon placement and button types to match the new library's API.

* refactor(SelectModelButton): replace antd Button with custom Button component

Simplify button implementation by using custom Button component from ui library instead of antd. Remove unused styled component and event handling.

* refactor(Preview): migrate ImageToolButton to use @cherrystudio/ui

Update ImageToolButton component to use Button from @cherrystudio/ui instead of antd
Change onClick prop to onPress to match new Button component API
Update related usage in ImageToolbar component

* refactor(ui): migrate buttons from antd to cherrystudio ui components

Update button components across multiple files to use cherrystudio's Button component instead of antd's. This includes updating props like onClick to onPress and adjusting button styling props to match the new component's API.

* refactor(ui): migrate antd buttons to @cherrystudio/ui buttons

Update button components from antd to @cherrystudio/ui library
Adjust button props to match new component API

* refactor(components): update prop names and component usage

- Rename onClick to onPress in ImageToolButton test props
- Update isLoading to loading in S3BackupManager table props
- Change ghost to variant in ProviderSetting button props
- Replace antd Button with cherrystudio Button in PreferenceBasicTests

* refactor(ImageToolButton): migrate from antd to @cherrystudio/ui

* refactor(FilesPage): migrate Button components from antd to @cherrystudio/ui

* refactor(SearchMessage): migrate Button components from antd to @cherrystudio/ui

* refactor(TopicMessages): migrate Button components from antd to @cherrystudio/ui

* refactor(TopicsHistory): migrate Button components from antd to @cherrystudio/ui

* refactor(ChatNavigation): migrate Button components from antd to @cherrystudio/ui

* refactor(CitationsList): migrate Button components from antd to @cherrystudio/ui

* refactor(MessageGroupMenuBar): migrate Button components from antd to @cherrystudio/ui

* refactor: reorganize button imports and adjust class order

Consolidate Button imports from @cherrystudio/ui to be grouped with other imports
Standardize className order for consistency across components

* refactor(SelectModelPopup): replace HStack with Flex component for layout

* feat: migrate PrivacyPopup from antd Button to @cherrystudio/ui Button

- Replace antd Button import with @cherrystudio/ui Button
- Update onClick to onPress event handler
- Update type="primary" to variant="solid" color="primary"
- Maintain existing functionality while following Hero UI API

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate NewTopicButton from antd Button to @cherrystudio/ui Button

- Replace antd Button import with @cherrystudio/ui Button
- Update size="small" to size="sm"
- Update icon prop to startContent for Hero UI API
- Update onClick to onPress event handler
- Maintain existing styled-components with StyledButton wrapper

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate MessageMcpTool Buttons from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update two Button components with Hero UI API:
  - size="small" to size="sm"
  - onClick to onPress
  - variant="filled" to variant="solid"
  - Move icons to startContent prop
- Maintain Dropdown.Button as antd component (not migrated)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate SettingsTab Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update settings icon button with Hero UI API:
  - type="text" to variant="light"
  - size="small" to size="sm"
  - icon prop to isIconOnly with child content
  - onClick to onPress event handler

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate AssistantTagsPopup Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update delete tag button with Hero UI API:
  - type="text" to variant="light"
  - danger prop to color="danger"
  - icon prop to isIconOnly with child content
  - onClick to onPress event handler

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate UpdateAppButton from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update styled Button component with Hero UI API:
  - onClick to onPress event handler
  - icon prop to startContent
  - color="orange" to color="warning" (closest equivalent)
  - variant="outlined" to variant="bordered"
  - size="small" to size="sm"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(NewTopicButton): replace styled-components with cn utility

Simplify component styling by removing styled-components in favor of the cn utility

* refactor: organize imports and remove unused event handlers

remove duplicate Button imports and clean up stopPropagation handlers

* feat: migrate KnowledgeContent Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update settings icon Button with Hero UI API:
  - type="text" to variant="light"
  - size="small" to size="sm"
  - icon prop to isIconOnly with child content
  - onClick to onPress event handler
- Update ResponsiveButton styled component selector:
  - .ant-btn-icon + span to [data-slot="icon"] + [data-slot="label"]

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate KnowledgeDirectories Buttons from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update three Button components with Hero UI API:
  - Refresh button: type="text" to variant="light", icon to isIconOnly, onClick to onPress
  - Delete button: type="text" danger to variant="light" color="danger", icon to isIconOnly, onClick to onPress
  - Add directory button: type="primary" to variant="solid" color="primary", icon to startContent, disabled to isDisabled
- Remove stopPropagation from add directory button as not needed with onPress

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate KnowledgeFiles Buttons from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update three Button components with Hero UI API:
  - Add file button: type="primary" to variant="solid" color="primary", icon to startContent, disabled to isDisabled
  - Refresh button: type="text" to variant="light", icon to isIconOnly, onClick to onPress
  - Delete button: type="text" danger to variant="light" color="danger", icon to isIconOnly, onClick to onPress
- Remove stopPropagation from add file button as not needed with onPress

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate KnowledgeNotes Buttons from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update three Button components with Hero UI API:
  - Add note button: type="primary" to variant="solid" color="primary", icon to startContent, disabled to isDisabled
  - Edit button: type="text" to variant="light", icon to isIconOnly, onClick to onPress
  - Delete button: type="text" danger to variant="light" color="danger", icon to isIconOnly, onClick to onPress
- Remove stopPropagation from add note button as not needed with onPress

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate KnowledgeSitemaps Buttons from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update three Button components with Hero UI API:
  - Add sitemap button: type="primary" to variant="solid" color="primary", icon to startContent, disabled to isDisabled
  - Refresh button: type="text" to variant="light", icon to isIconOnly, onClick to onPress
  - Delete button: type="text" danger to variant="light" color="danger", icon to isIconOnly, onClick to onPress
- Remove stopPropagation from add sitemap button as not needed with onPress

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate KnowledgeUrls Buttons from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update three Button components with Hero UI API:
  - Add URL button: type="primary" to variant="solid" color="primary", icon to startContent, disabled to isDisabled
  - Refresh button: type="text" to variant="light", icon to isIconOnly, onClick to onPress
  - Delete button: type="text" danger to variant="light" color="danger", icon to isIconOnly, onClick to onPress
- Remove stopPropagation from add URL button as not needed with onPress

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate KnowledgeVideos Buttons from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update three Button components with Hero UI API:
  - Add video button: type="primary" to variant="solid" color="primary", icon to startContent, disabled to isDisabled
  - Refresh button: type="text" to variant="light", icon to isIconOnly, onClick to onPress
  - Delete button: type="text" danger to variant="light" color="danger", icon to isIconOnly, onClick to onPress
- Remove stopPropagation from add video button as not needed with onPress

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate MinAppsPage Buttons from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update two settings Button components with Hero UI API:
  - type="text" to variant="light"
  - icon prop to isIconOnly with child content
  - onClick to onPress event handler
  - Maintain className="nodrag" for draggable interface

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate MiniAppSettings Buttons from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update two Button components with Hero UI API:
  - Swap button: onClick to onPress event handler
  - Reset button: onClick to onPress event handler
- Buttons use default Hero UI styling without additional props

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate NewAppButton from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update two Button components with Hero UI API:
  - Upload button: icon to startContent
  - Save button: type="primary" htmlType="submit" to variant="solid" color="primary" type="submit"
- Maintain form submission functionality with type="submit"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: standardize button imports from @cherrystudio/ui

* refactor(KnowledgeContent): replace icon prop with startContent in Button

Improve consistency with component library by using startContent prop instead of children for icons

* refactor(KnowledgeVideos): update button components to use startContent prop

Use startContent prop for icons in buttons to improve consistency with the design system

* refactor(MinAppsPage): improve button component structure by using startContent prop

* feat: migrate AihubmixPage Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update Button props with Hero UI API:
  - size="small" to size="sm"
  - icon to startContent
  - onClick to onPress

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate DmxapiPage Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update Button props with Hero UI API:
  - size="small" to size="sm"
  - icon to startContent
  - onClick to onPress

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate NewApiPage Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update Button props with Hero UI API:
  - size="small" to size="sm"
  - icon to startContent
  - onClick to onPress
  - type="primary" to variant="solid" color="primary"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate SiliconPage Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update Button props with Hero UI API:
  - size="small" to size="sm"
  - icon to startContent
  - onClick to onPress

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate TokenFluxPage Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update Button props with Hero UI API:
  - size="small" to size="sm"
  - icon to startContent
  - onClick to onPress

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate ZhipuPage Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update Button props with Hero UI API:
  - type="text" to variant="light"
  - icon to startContent
  - onClick to onPress
  - disabled to isDisabled

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate Artboard Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update Button props with Hero UI API:
  - onClick to onPress for NavigationButton and CancelButton
  - type="link" to variant="light"
- Maintain styled-components usage for NavigationButton and CancelButton

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate DynamicFormRender Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update Button props with Hero UI API:
  - icon to startContent
  - onClick to onPress
  - size="small" to size="sm"
  - danger to color="danger"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: convert Button inline styles to Tailwind CSS

- Replace style={{borderTopLeftRadius: 0, borderBottomLeftRadius: 0, height: '32px'}} with className="rounded-l-none h-8"
- Replace style={{flexShrink: 0, minWidth: 'auto', padding: '0 8px'}} with className="shrink-0 min-w-0 px-2"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate ImageUploader Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update Button props with Hero UI API:
  - size="small" to size="sm"
  - onClick to onPress

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(Artboard): replace inline styles with tailwind classes

Use tailwind classes for consistent styling of navigation buttons instead of inline styles

* feat: migrate AboutSettings Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update Button props with Hero UI API:
  - onClick to onPress for all Button components
  - loading to isLoading for CheckUpdateButton
  - disabled to isDisabled for CheckUpdateButton
- Maintain CheckUpdateButton styled component

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate AssistantMemorySettings Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update Button props with Hero UI API:
  - type="text" to variant="light" + isIconOnly
  - icon to startContent
  - onClick to onPress
  - size="small" to size="sm"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate AssistantModelSettings Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update Button props with Hero UI API:
  - icon to startContent
  - onClick to onPress
  - variant="filled" to variant="solid"
  - danger + type="primary" to color="danger" variant="solid"
  - Add isIconOnly for icon-only buttons
- Maintain ModelSelectButton styled component

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate AssistantPromptSettings Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update Button props with Hero UI API:
  - type="primary" to variant="solid" color="primary"
  - icon to startContent
  - onClick to onPress
- Convert inline styles to Tailwind CSS:
  - style={{fontSize: 18, padding: '4px', minWidth: '28px', height: '28px'}} to className="text-lg p-1 min-w-7 h-7"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: consolidate Button imports from @cherrystudio/ui

Move all Button imports from @cherrystudio/ui to be grouped with other imports from the same package for better consistency and maintainability

* feat: migrate AssistantRegularPromptsSettings Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update Button props with Hero UI API:
  - type="text" to variant="light"
  - icon to startContent
  - onClick to onPress
  - Add isIconOnly for icon-only buttons
  - danger to color="danger"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: migrate DataSettings Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Update Button props with Hero UI API:
  - onClick to onPress for all buttons
  - icon to startContent for backup/restore buttons
  - danger to color="danger" for reset button

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(NutstoreSettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handlers
- Update type/danger props to variant/color system
- Convert loading to isLoading prop
- Convert disabled to isDisabled prop
- Update ghost prop to variant="ghost"
- Add isIconOnly for folder icon button
- Migrate startContent pattern for icons

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(S3Settings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handlers
- Convert icon props to startContent pattern
- Convert loading to isLoading prop
- Convert disabled to isDisabled prop

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(SiyuanSettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(WebDavSettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handlers
- Convert icon props to startContent pattern
- Convert loading to isLoading prop
- Convert disabled to isDisabled prop

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(YuqueSettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(DisplaySettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handlers
- Convert icon props to startContent pattern
- Convert variant="text" to variant="light"
- Add isIconOnly for icon-only buttons
- Replace inline styles with Tailwind CSS classes

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(PreprocessProviderSettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler
- Convert type="text" to variant="light"
- Convert size="small" to size="sm"
- Convert icon to startContent pattern
- Add isIconOnly for icon-only button

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(NotionSettings): replace antd Button with cherrystudio Button and update prop

Update the Button import to use cherrystudio's component instead of antd's

* refactor(settings): migrate Button props to use startContent and isDisabled

Update Button components in LocalBackupSettings to use startContent instead of icon and isDisabled instead of disabled for consistency with the updated UI library

* refactor(JoplinSettings): replace Button import and update onPress prop

Use Button component from @cherrystudio/ui instead of antd
Update onClick to onPress for consistency with component API

* refactor(MarkdownExportSettings): replace antd Button with cherrystudio Button in markdown export

Update the Button component import and props to use the cherrystudio UI library version instead of antd for consistency

* refactor: organize imports in settings components

Move Button import from cherrystudio/ui to be grouped with other imports from the same package for better consistency and readability

* refactor(AddMcpServerModal): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert icon prop to startContent pattern

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(BuiltinMCPServerList): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler
- Convert type="text" to variant="light"
- Convert size="small" to size="sm"
- Convert icon to startContent pattern
- Convert disabled to isDisabled prop
- Add isIconOnly for icon-only button

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(InstallNpxUv): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handlers
- Convert type="primary" to variant="solid" color="primary"
- Convert type="link" to variant="light"
- Convert shape="circle" to radius="full"
- Convert size="small" to size="sm"
- Convert loading/disabled to isLoading/isDisabled
- Convert icon to startContent pattern
- Add isIconOnly for icon-only button
- Convert green color to success color

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(McpServerCard): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handlers (removing e.stopPropagation)
- Convert type="text" to variant="light"
- Convert size="small" to size="sm"
- Convert shape="circle" to radius="full"
- Convert danger to color="danger"
- Convert icon to startContent pattern
- Add isIconOnly for icon-only buttons

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(MCPSettings): reorder Button imports for consistency

Move Button imports to be grouped with other UI component imports for better readability and maintainability

* refactor(McpServersList): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handlers
- Convert type="default" to variant="solid"
- Convert shape="round" to radius="full"
- Convert icon to startContent pattern

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(McpServerCard): remove unused event parameter from click handlers

The event parameter was not being used in handleOpenUrl and onClickDetails handlers, so it was removed to simplify the code.

* refactor(McpServerCard): remove data-no-dnd attribute from Button

* refactor(McpSettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handlers
- Convert danger to color="danger"
- Convert type="text" to variant="light"
- Convert type="primary" to variant="solid" color="primary"
- Convert shape="round" to radius="full"
- Convert loading/disabled to isLoading/isDisabled
- Convert icon to startContent pattern
- Add isIconOnly for icon-only button

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(McpSettingsNavbar): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler
- Convert type="text" to variant="light"
- Convert size="small" to size="sm"
- Convert icon to startContent pattern
- Replace inline styles with Tailwind CSS classes

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(NpxSearch): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler
- Convert type="text" to variant="light"
- Convert size="small" to size="sm"
- Convert icon to startContent pattern
- Add isIconOnly for icon-only button

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(SyncServersPopup): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handlers
- Convert type="default" to variant="solid"
- Convert type="primary" to variant="solid" color="primary"
- Convert loading/disabled to isLoading/isDisabled

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(MCPSettings/index): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert type="default" to variant="solid"
- Convert shape="circle" to radius="full"
- Convert icon to startContent pattern
- Add isIconOnly for icon-only button

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(MemorySettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handlers
- Convert type="text" to variant="light"
- Convert type="primary" to variant="solid" color="primary"
- Convert size="large" to size="lg"
- Convert size="small" to size="sm"
- Convert loading/disabled to isLoading/isDisabled
- Convert danger to color="danger"
- Convert icon to startContent pattern
- Add isIconOnly for icon-only buttons

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(UserSelector): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler
- Convert type="default" to variant="solid"
- Convert icon to startContent pattern
- Add isIconOnly for icon-only button

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(DefaultAssistantSettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler
- Convert type="text" to variant="light"
- Convert icon to startContent pattern
- Add isIconOnly for icon-only button
- Replace inline styles with Tailwind CSS classes

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(QuickModelPopup): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler
- Change icon prop to startContent
- Update type="text" to variant="light"
- Add isIconOnly prop for icon-only button

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(NotesSettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler for all buttons
- Change type="default" to variant="solid"
- Change type="primary" to color="primary"
- Update loading to isLoading prop
- Update disabled to isDisabled prop
- Change icon prop to startContent
- Replace inline style with Tailwind CSS class (ml-2)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(AnthropicSettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler
- Change type="primary" to color="primary"
- Update loading to isLoading prop

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(ModelEditContent): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler for all buttons
- Change size="small" to size="sm"
- Update icon prop to startContent for save and reset buttons
- Change iconPosition="end" to endContent for more settings toggle
- Update type="text" to variant="light" and add isIconOnly for reset button
- Change type="primary" to color="primary"
- Replace htmlType="submit" with type="submit"
- Update variant="filled" to variant="solid"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(ModelTypeSelector): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler
- Change size="small" to size="sm"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(GithubCopilotSettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler for all buttons
- Change type="primary" to color="primary"
- Change type="primary" danger to color="danger"
- Update size="small" to size="sm"
- Update loading to isLoading prop
- Update disabled to isDisabled prop
- Change icon prop to startContent for copy button

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(AddModelPopup): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Change type="primary" to color="primary"
- Replace htmlType="submit" with type="submit"
- Change size="middle" to size="md"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(ModelList): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler for all buttons
- Change type="text" to variant="light" and add isIconOnly for icon button
- Change type="primary" to color="primary"
- Change type="default" to variant="solid"
- Update disabled to isDisabled prop
- Change icon prop to startContent for all buttons

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(ModelListGroup): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler
- Change type="text" to variant="light"
- Update disabled to isDisabled prop
- Change icon prop to startContent
- Remove e.stopPropagation() as no longer needed
- Add isIconOnly prop for icon-only button

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(ModelListItem): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler for both buttons
- Change type="text" to variant="light"
- Update disabled to isDisabled prop
- Change icon prop to startContent for both buttons
- Add isIconOnly prop for icon-only buttons

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(NewApiAddModelPopup): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Change type="primary" to color="primary"
- Replace htmlType="submit" with type="submit"
- Change size="middle" to size="md"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(NewApiBatchAddModelPopup): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Change type="primary" to color="primary"
- Replace htmlType="submit" with type="submit"
- Change size="middle" to size="md"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(ProviderList): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler
- Update disabled to isDisabled prop
- Change icon prop to startContent
- Keep existing style attributes for custom styling

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(ProviderOAuth): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler for both buttons
- Change shape="round" to radius="full"
- Change icon prop to startContent for both buttons

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(UrlSchemaInfoPopup): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler
- Change type="link" to variant="light"
- Change size="small" to size="sm"
- Change icon prop to startContent
- Add isIconOnly prop for icon-only button

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(QuickAssistantSettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler for both styled buttons
- Change type="primary" to color="primary"
- Change type="default" to color="default"
- Update styled component to use new Button from @cherrystudio/ui

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(QuickPhraseSettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler for all buttons
- Change type="text" to variant="light"
- Change icon prop to startContent for all buttons
- Change danger prop to color="danger"
- Add isIconOnly prop for all icon-only buttons

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(SelectionAssistantSettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler for both buttons
- Change type="link" to variant="light"
- Change icon prop to startContent
- Keep existing style attributes for custom styling

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(ActionsListItem): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler for all buttons
- Change type="link" to variant="light"
- Change size="small" to size="sm"
- Change danger prop to color="danger"
- Add isIconOnly prop for all icon-only buttons

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(MacProcessTrustHintModal): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler for both buttons
- Change type="link" to variant="light"
- Change type="primary" to color="primary"
- Keep existing style attributes for custom styling

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(SelectionActionSearchModal): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler
- Change type="link" to variant="light"
- Change size="small" to size="sm"
- Keep existing style attributes for custom styling

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(SelectionFilterListModal): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handler for both modal buttons
- Change type="primary" to color="primary"
- Keep existing key attributes for modal footer

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(SettingsActionsListHeader): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handlers
- Update icon prop to startContent with Plus icon
- Change disabled to isDisabled
- Add color="primary" for primary button style
- Update styled ResetButton to use variant="light"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(ShortcutSettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handlers for all buttons
- Update icon prop to startContent for icon buttons
- Change disabled to isDisabled
- Convert size="small" to size="sm"
- Replace shape="circle" with isIconOnly for circular buttons
- Migrate reset undo button, clear button, and reset all button

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(ApiServerSettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handlers for all buttons
- Update icon prop to startContent for documentation and copy buttons
- Change type="primary" to color="primary"
- Convert type="link" to variant="light" for regenerate button
- Change disabled to isDisabled for input button and regenerate button

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(CustomLanguageModal): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handlers for modal footer buttons
- Change type="primary" to color="primary" for save button
- Convert icon prop to startContent with isIconOnly for emoji button
- Migrate cancel, save, and emoji picker buttons to Hero UI API

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(CustomLanguageSettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handlers for all buttons
- Update icon prop to startContent for edit, delete, and add buttons
- Change type="primary" to color="primary" for add button
- Convert danger prop to color="danger" for delete button
- Migrate table action buttons and primary add button to Hero UI API

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(AddSubscribePopup): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert type="primary" to color="primary" for submit button
- Change htmlType="submit" to type="submit" following Hero UI API
- Migrate form submit button from antd to Hero UI

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(BlacklistSettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handlers for all buttons
- Change type="primary" to color="primary" for subscribe buttons
- Convert ghost prop to variant="ghost"
- Change disabled to isDisabled for all button states
- Migrate save, add subscribe, update subscribe, and delete buttons

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(WebSearchProviderSetting): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handlers for API key list and check buttons
- Change type="text" to variant="light" for API key list button
- Convert icon prop to startContent with isIconOnly for list button
- Update size="small" to size="sm"
- Change ghost prop to variant="ghost" and type to color for check button
- Convert disabled to isDisabled for API checking state

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(TranslateSettings): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress for more settings button
- Simple migration for modal footer button

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(MigrateApp): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handlers for all migration buttons
- Change type="primary" to color="primary" for primary buttons
- Convert disabled to isDisabled for migration in progress button
- Change size="small" to size="sm" for debug button
- Convert type="dashed" to variant="bordered" for styled buttons
- Migrate all buttons in migration workflow stages

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(SelectionActionApp): migrate Button from antd to @cherrystudio/ui

- Replace antd Button import with @cherrystudio/ui Button
- Convert onClick to onPress handlers for all window control buttons
- Change type="text" to variant="light" for all title bar buttons
- Update icon prop to startContent for pin, opacity, minimize, and close buttons
- Add isIconOnly prop for all icon-only buttons in the title bar
- Migrate styled WinButton component to use Hero UI Button as base

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* style(ActionIconButton): remove fixed dimensions and add size prop

Simplify button styling by removing fixed height/width and using size="sm" prop instead

* refactor(AssistantPromptSettings): migrate from antd Popover to hero-ui components

Replace antd Popover with hero-ui Popover and Tooltip components for better consistency
Rename EmojiButtonWrapper to EmojiDeleteButtonWrapper for clarity

* style(AssistantModelSettings): add size prop to delete button in model settings

* style(settings): standardize button sizes and replace Space.Compact with Flex

Consistently apply 'sm' size to buttons across settings components and replace deprecated Space.Compact with Flex component for better layout consistency

* refactor(ApiServerSettings): replace custom buttons with standard Button component

remove custom styled InputButton and RegenerateButton components in favor of using the standard Button component with appropriate props

* style(ProviderSetting): make settings button icon-only for consistency

* style(ui): update icon styling and button props

remove global lucide icon color override
update button components to use consistent props

* style(ProviderList): adjust button size to match design

* feat(theme): add foreground color calculation for primary theme

Calculate and set foreground color based on primary theme color to ensure proper contrast

* style(KnowledgeFiles): make button size consistent with other buttons

* test: update test snapshots for button components

Update test snapshots to reflect changes in button styling and accessibility attributes. The changes include updated class names, ripple effects, and focus states.

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: fullex <106392080+0xfullex@users.noreply.github.com>
Co-authored-by: MyPrototypeWhat <daoquqiexing@gmail.com>
2025-09-29 12:04:03 +08:00
fullex
e6696def10 chore: update TypeScript configuration and refactor AppUpdater tests
- Added tests mock path to tsconfig.node.json for improved test coverage.
- Refactored AppUpdater to use preferenceService for language retrieval instead of configManager.
- Updated AppUpdater tests to mock preferenceService and ensure correct language handling in release notes.
- Changed import statements to use type imports for better clarity in MessageMcpTool component.
2025-09-29 10:11:40 +08:00
fullex
e5a3363021 Merge branch 'main' of github.com:CherryHQ/cherry-studio into v2 2025-09-29 10:01:04 +08:00
LeaderOnePro
c7d2588f1a
feat: add LongCat provider support (#10365)
* feat: add LongCat provider support

- Add LongCat to SystemProviderIds enum
- Add LongCat provider logo and configuration
- Configure API endpoints and URLs based on official docs
- Add two models: LongCat-Flash-Chat and LongCat-Flash-Thinking
- Update provider mappings for proper integration

The LongCat provider uses OpenAI-compatible API format and supports
up to 8K tokens output with daily free quota of 500K tokens.

Signed-off-by: LeaderOnePro <leaderonepro@outlook.com>

* feat: add migration for LongCat provider

- Add migration version 158 for LongCat provider
- Ensure existing users get LongCat provider on app update
- Follow standard migration pattern for simple provider additions

Signed-off-by: LeaderOnePro <leaderonepro@outlook.com>

---------

Signed-off-by: LeaderOnePro <leaderonepro@outlook.com>
2025-09-28 20:54:42 +08:00
MyPrototypeWhat
06ab2822be
Refactor/reasoning time (#10393) 2025-09-28 19:38:44 +08:00
kangfenmao
bb0ec0a3ec chore: update @ai-sdk/google patch and refine getModelPath function
- Updated the resolution and checksum for the @ai-sdk/google patch in yarn.lock.
- Enhanced the getModelPath function to check for "models/" in the modelId before returning the path, improving its robustness.
2025-09-28 16:32:51 +08:00
MyPrototypeWhat
483b4e090e
feat(toolUsePlugin): separate provider-defined tools from prompt tool (#10428)
* feat(toolUsePlugin): separate provider-defined tools from prompt tools in context

- Enhanced the `createPromptToolUsePlugin` function to distinguish between provider-defined tools and other tools, ensuring only non-provider-defined tools are saved in the context.
- Updated the handling of tools in the transformed parameters to retain provider-defined tools while removing others.
- Improved error handling in `ToolExecutor` by logging tool and tool use details for better debugging.
- Refactored various components to use `NormalToolResponse` instead of `MCPToolResponse`, aligning with the new response structure across multiple message components.

* refactor(toolUsePlugin): streamline tool handling in createPromptToolUsePlugin

- Updated the `createPromptToolUsePlugin` function to improve type handling for tools, ensuring proper type inference and reducing the use of type assertions.
- Enhanced clarity in the separation of provider-defined tools and prompt tools, maintaining functionality while improving code readability.

* refactor(ToolExecutor): remove debug logging for tool and tool use

- Removed console logging for tool and tool use details in the ToolExecutor class to clean up the code and improve performance. This change enhances the clarity of the code without affecting functionality.
2025-09-28 16:27:26 +08:00
kangfenmao
4975c2d9e8 chore: update build configurations to use secrets for sensitive environment variables
- Modified GitHub Actions workflows to replace environment variable references with secrets for MAIN_VITE_MINERU_API_KEY, RENDERER_VITE_AIHUBMIX_SECRET, and RENDERER_VITE_PPIO_APP_SECRET.
- Added onwarn handler in electron.vite.config.ts to suppress specific warnings related to CommonJS variables in ESM.
2025-09-28 16:12:48 +08:00
kangfenmao
5365fddec9 chore: bump version to 1.6.2
- Updated release notes to reflect recent optimizations and bug fixes, including improvements to the note-taking feature and resolution of issues with CherryAI and VertexAI.
- Bumped version number from 1.6.1 to 1.6.2 in package.json.
2025-09-28 15:07:21 +08:00
kangfenmao
e401685449 lint: fix code format 2025-09-28 14:57:01 +08:00
MyPrototypeWhat
e195ad4a8f
refactor(tools): enhance descriptions for knowledge and web search tools (#10433)
* refactor(tools): enhance descriptions for knowledge and web search tools

- Updated the descriptions for the knowledgeSearchTool and webSearchTool to provide clearer context on their functionality.
- Improved the formatting of prepared queries and relevant links in the descriptions to enhance user understanding.
- Added information on how to use the tools with additional context for refined searches.

* fix:format lint
2025-09-28 14:56:04 +08:00
one
20f5271682
fix: quick assistant avatar and search (#10281) 2025-09-28 14:15:56 +08:00
Phantom
5524571c80
fix(ErrorBlock): prevent event propagation when removing block (#10368)
This PR correctly addresses an event propagation issue where clicking the close button on an error alert was unintentionally triggering the parent click handler (which opens the detail modal).
2025-09-28 14:09:11 +08:00
Phantom
cd3031479c
fix(reasoning): correct regex pattern for deepseek model detection (#10407) 2025-09-28 14:07:30 +08:00
Pleasure1234
1df6e8c732
refactor(notes): improve notes management with local state and file handling (#10395)
* refactor(notes): improve notes management with local state and file handling

- Replace UUID-based IDs with SHA1 hash of file paths for better consistency
- Remove database storage for notes tree, use local state management instead
- Add localStorage persistence for starred and expanded states
- Improve cross-platform path normalization (replace backslashes with forward slashes)
- Refactor tree operations to use optimized in-memory operations
- Enhance file watcher integration for better sync performance
- Simplify notes service with direct file system operations
- Remove database dependencies from notes tree management

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Revert "Merge remote-tracking branch 'origin/main' into refactor/note"

This reverts commit 389386ace8, reversing
changes made to 4428f511b0.

* fix: format error

* refactor: noteservice

* refactor(notes): 完成笔记状态从localStorage向Redux的迁移

- 将starred和expanded路径状态从localStorage迁移到Redux store
- 添加版本159迁移逻辑,自动从localStorage迁移现有数据到Redux
- 优化NotesPage组件,使用Redux状态管理替代本地localStorage操作
- 改进SaveToKnowledgePopup的错误处理和验证逻辑
- 删除NotesTreeService中已废弃的localStorage写入函数
- 增强组件性能,使用ref避免不必要的依赖更新

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: ci

* feat(notes): add in-place renaming for notes in HeaderNavbar

- Implemented an input field for renaming the current note directly in the HeaderNavbar.
- Added handlers for title change, blur, and key events to manage renaming logic.
- Updated the breadcrumb display to accommodate the new title input.
- Enhanced styling for the title input to ensure seamless integration with the existing UI.

This feature improves user experience by allowing quick edits without navigating away from the notes list.

* Update NotesEditor.tsx

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: kangfenmao <kangfenmao@qq.com>
2025-09-28 13:50:52 +08:00
Xin Rui
ed2e01491e
fix: clear @ and other input text when exiting model selection menu w… (#10427)
fix: clear @ and other input text when exiting model selection menu with Esc
2025-09-28 13:44:27 +08:00
kangfenmao
228ed474ce chore: update @ai-sdk/google patch and modify getModelPath function
- Updated the resolution and checksum for the @ai-sdk/google patch in yarn.lock.
- Removed the patch reference from package.json for @ai-sdk/google.
- Modified the getModelPath function to simplify its implementation, removing the baseURL parameter.
2025-09-28 13:31:18 +08:00
亢奋猫
6829a03437
fix: AI_APICallError for Gemini via proxy #10366 (#10429)
When sending requests to Gemini via proxy, the system returns:
"模型不存在或者请求路径错误".
2025-09-28 13:01:49 +08:00
Phantom
dabfb8dc0e
style(settings): remove unnecessary padding from ContentContainer (#10379) 2025-09-26 17:50:00 +08:00
Zhaokun
4aa9c9f225
feat: improve content protection during file operations (#10378)
* feat: improve content protection during file operations

- Add validation for knowledge base configuration before saving
- Enhance error handling for note content reading
- Implement content backup and restoration during file rename
- Add content verification after rename operations
- Improve user feedback with specific error messages

* fix: format check

---------

Co-authored-by: 自由的世界人 <3196812536@qq.com>
2025-09-26 17:49:24 +08:00
MyPrototypeWhat
52a980f751
fix(websearch): handle blocked domains conditionally in web search (#10374)
fix(websearch): handle blocked domains conditionally in web search configurations

- Updated the handling of blocked domains in both Google Vertex and Anthropic web search configurations to only include them if they are present, improving robustness and preventing unnecessary parameters from being passed.
2025-09-26 12:10:28 +08:00
kangfenmao
3b7ab2aec8 chore: remove cherryin provider references and update versioning
- Commented out all references to the 'cherryin' provider in configuration files.
- Updated the version in the persisted reducer from 157 to 158.
- Added migration logic to remove 'cherryin' from the state during version 158 migration.
2025-09-26 10:36:17 +08:00
Zhaokun
d41e239b89
Fix slash newline (#10305)
* Fix slash menu Shift+Enter newline

* fix: enable Shift+Enter newline in rich editor with slash commands

Fixed an issue where users couldn't create new lines using Shift+Enter when
slash command menu (/foo) was active. The problem was caused by globa
keyboard event handlers intercepting all Enter key variants.

Changes:
 - Allow Shift+Enter to pass through QuickPanel event handling
 - Add Shift+Enter detection in CommandListPopover to return false
 - Implement fallback Shift+Enter handling in command suggestion render
 - Remove unused import in AppUpdater.ts
 - Convert Chinese comments to English in QuickPanel
- Add test coverage for command suggestion functionality

---------

Co-authored-by: Zhaokun Zhang <zhaokunzhang@Zhaokuns-Air.lan>
2025-09-25 22:07:10 +01:00
kangfenmao
b85040f579 chore: update dependencies and versioning
- Bump version to 1.6.1 in package.json.
- Add patch for @ai-sdk/google@2.0.14 to address specific issues.
- Update yarn.lock to reflect the new dependency resolution for @ai-sdk/google.
- Modify getModelPath function to accept baseURL parameter for improved flexibility.
2025-09-25 22:11:29 +08:00
kangfenmao
8bcd229849 feat: enhance model filtering based on supported endpoint types
- Updated CodeToolsPage to include checks for supported endpoint types for various CLI tools.
- Added 'cherryin' to GEMINI_SUPPORTED_PROVIDERS and updated CLAUDE_SUPPORTED_PROVIDERS to include it.
- Improved logic for determining model compatibility with selected CLI tools, enhancing overall functionality.
2025-09-25 22:11:29 +08:00
beyondkmp
d12515ccb9
feat: enhance multi-language support in release notes processing (#10355)
* feat: enhance multi-language support in release notes processing

* fix review comments

* format code
2025-09-25 21:51:05 +08:00
beyondkmp
499cb52e28
feat: enhance terminal command handling for macOS (#10362)
- Introduced a helper function to escape strings for AppleScript to ensure proper command execution.
- Updated terminal command definitions to utilize the new escape function, improving compatibility with special characters.
- Adjusted command parameters to use double quotes for directory paths, enhancing consistency and reliability.
2025-09-25 21:26:04 +08:00
MyPrototypeWhat
05a318225c
refactor(reasoning): simplify reasoning time tracking by removing unu… (#10360)
* refactor(reasoning): simplify reasoning time tracking by removing unused variables and logic

- Removed hasStartedThinking and reasoningBlockId variables as they are no longer needed.
- Updated onThinkingComplete callback to eliminate final_thinking_millsec parameter, streamlining the function.

* refactor(thinking): streamline thinking millisecond tracking and update event handling

- Removed unused thinking_millsec parameter from onThinkingComplete and adjusted related logic.
- Updated AiSdkToChunkAdapter to simplify reasoning-end event handling by removing unnecessary properties.
- Modified integration tests to reflect changes in thinking event structure.
2025-09-25 19:06:25 +08:00
one
caad0bc005
fix: svg foreignobject in code blocks (#10339)
* fix: svg foreignobject in code blocks

* fix: set white-space explicitly
2025-09-25 18:02:06 +08:00
beyondkmp
067ecb5e8e
style: update UpdateNotesWrapper to use markdown class for improved formatting (#10359) 2025-09-25 09:07:27 +01:00
beyondkmp
0f8cbeed11
fix(translate): remove unused effect for clearing translation contenton mount (#10349)
* fix(translate): remove unused effect for clearing translation content on mount

* format code
2025-09-25 13:44:17 +08:00
Phantom
2ed99c0cb8
ci(workflow): only trigger PR CI on non-draft PRs (#10338)
ci(workflow): only trigger PR CI on non-draft PRs and specific events

Add trigger conditions for PR CI workflow to run on non-draft PRs and specific event types
2025-09-25 13:28:51 +08:00
fullex
f6ff436294 refactor: replace keyv with cacheService 2025-09-25 11:38:05 +08:00
kangfenmao
0a149e3d9e chore: release v1.6.0 2025-09-25 10:55:45 +08:00
SuYao
a3a26c69c5
fix: seed think (#10322)
* fix: 添加 seedThink 标签以支持新的模型识别

* Enable reasoning for SEED-OSS models

- Add SEED-OSS model ID check to reasoning exclusion logic
- Include SEED-OSS models in reasoning model detection

* fix: 更新 reasoning-end 事件处理以使用最终推理内容
2025-09-25 10:55:31 +08:00
Johnny.H
2bafc53b25
Show loading icon when chat is in streaming (#10319)
* support chat stream loading rendering

* support chat stream loading rendering

* update loading icon to dots

* fix format

---------

Co-authored-by: suyao <sy20010504@gmail.com>
2025-09-24 23:27:07 +08:00
fullex
8a9b633af2 Merge branch 'main' of github.com:CherryHQ/cherry-studio into v2 2025-09-24 22:30:56 +08:00
Phantom
0a37146ba8
refactor(SelectModelPopup): replace HStack with Flex component (#10337)
refactor(SelectModelPopup): replace HStack with Flex component for layout
2025-09-24 20:10:12 +08:00
George·Dong
09e9b95e08
fix(reasoning): thinking control for ds v3.1 of tencent platform (#10333)
* feat(reasoning): add Hunyuan and Tencent TI thinking config

* fix: style

* fix(reasoning): merge same type providers
2025-09-24 18:38:13 +08:00
kangfenmao
bf2ffb7465 chore: bump version to v1.6.0-rc.5 and update release notes 2025-09-24 18:06:25 +08:00
kangfenmao
287c96ea2e feat: implement isNewApiProvider utility for provider identification
- Added isNewApiProvider function to streamline checks for 'new-api' and 'cherryin' providers.
- Updated ApiClientFactory, providerConfig, and various components to utilize isNewApiProvider for improved readability and maintainability.
- Refactored conditional checks across multiple files to replace direct string comparisons with the new utility function.
2025-09-24 16:39:23 +08:00
kangfenmao
adacb8c638 style: update padding and width in various components for improved layout
- Adjusted padding in TabsBar and Navbar components to enhance spacing.
- Updated ItemRenderer and Sortable components to accept itemStyle prop for custom styling.
- Changed NotesSidebar scroll behavior from 'smooth' to 'instant'.
- Modified MCP server card width to 100% for better responsiveness.
- Set wrapperStyle and itemStyle to 100% width in McpServersList for consistent item display.
2025-09-24 16:31:25 +08:00
Pleasure1234
7a3d08672a
feat: add workflow to delete merged branch (#10314)
* Create delete-branch.yml

* Update delete-branch.yml

* Update delete-branch.yml
2025-09-24 16:18:22 +08:00
George·Dong
ec4d106a59
fix(minapps): openMinApp function doesn't work properly (#10308)
* feat(minapps): support temporary minapps

* feat(settings): use openSmartMinApp with app logo to open docs sites

* refactor(icons): replace styled img with tailwind

* feat(tab): tighten types

* feat(tab): use minapps cache and log missing entries

* test(icons): update MinAppIcon snapshot to reflect class and attrs
2025-09-24 14:19:06 +08:00
fullex
ac3dfcbfbe Merge branch 'main' of github.com:CherryHQ/cherry-studio into v2 2025-09-24 13:13:58 +08:00
Phantom
fe0c0fac1e
fix(assistant): enforce id requirement when updating assistant (#10321)
* fix(assistant): enforce id requirement when updating assistant

Ensure assistant id is always provided when updating assistant properties by making it a required field in the update payload. This prevents potential bugs where updates might be applied to wrong assistants.

* refactor(useAssistant): simplify updateAssistant callback by removing redundant id

Update InputbarTools to use simplified callback signature
2025-09-24 12:24:28 +08:00
kangfenmao
4a4a1686d3 chore: bump version to 1.6.0-rc.4
- Update version in package.json
- Update release notes in electron-builder.yml
2025-09-23 20:46:46 +08:00
kangfenmao
37218eef4f feat: enable cherryin provider 2025-09-23 20:19:05 +08:00