Skip to content

feat: custom thinking animation with multi-file management[多文件管理的思考动画设置,头像大小可调]#1120

Open
Andy365-365 wants to merge 7 commits into
EKKOLearnAI:mainfrom
Andy365-365:feature/custom-thinking-animation
Open

feat: custom thinking animation with multi-file management[多文件管理的思考动画设置,头像大小可调]#1120
Andy365-365 wants to merge 7 commits into
EKKOLearnAI:mainfrom
Andy365-365:feature/custom-thinking-animation

Conversation

@Andy365-365

@Andy365-365 Andy365-365 commented May 29, 2026

Copy link
Copy Markdown
Contributor

Summary

Allow users to customize the thinking animation shown during agent processing, with support for multiple animation files per profile.

Changes

Frontend

  • Thinking animation modal in profile settings with a left preview / right thumbnail layout
  • Multi-file upload — users can upload up to 5 animation files (GIF, WebP, MP4, WebM)
  • Thumbnail list with individual delete buttons and click-to-select active animation
  • Toggle to completely disable the thinking animation indicator
  • i18n — full translations for both zh and en locales

Backend

  • New API routes: PUT /api/hermes/profiles/:name/thinking-animation and DELETE /api/hermes/profiles/:name/thinking-animation
  • Persistence: animation metadata saved as thinking-animation.json per profile
  • Backward compatibility: legacy single-url format auto-migrated to items[] array
  • Profile endpoints now return thinkingAnimation alongside avatar
  • Body parser limit increased from 100KB to 50MB for large Base64 GIF uploads

Chat

  • Thinking indicator reads custom animation from active profile instead of hardcoded GIF
  • Respects enableThinking toggle to show/hide indicator

API Types

  • New ProfileThinkingAnimation interface with items[] and activeIndex
  • New API methods: updateProfileThinkingAnimation(), deleteProfileThinkingAnimation()
  • Store exposes updateThinkingAnimation() and deleteThinkingAnimation()

Backward Compatibility

  • url field retained — server auto-migrates old data to items[] format
  • Profiles without custom animation use default light/dark GIF as before

Testing

  • Tested with large GIF files (several MB) — no more 413 errors
  • Verified profile endpoints return animation data correctly
  • Verified toggle shows/hides indicator as expected
2026-05-29_16-08-34 2026-05-29_16-08-54 2026-05-29_16-09-42

@Andy365-365 Andy365-365 changed the title feat: custom thinking animation with multi-file management feat: custom thinking animation with multi-file management[多文件管理的思考动画,头像大小可调] May 30, 2026
@Andy365-365 Andy365-365 changed the title feat: custom thinking animation with multi-file management[多文件管理的思考动画,头像大小可调] feat: custom thinking animation with multi-file management[多文件管理的思考动画设置,头像大小可调] May 30, 2026
@Andy365-365 Andy365-365 force-pushed the feature/custom-thinking-animation branch 4 times, most recently from afa471b to e6ed82c Compare May 31, 2026 07:56
@Andy365-365

Copy link
Copy Markdown
Contributor Author

@EKKOLearnAI

Hi ekko,

I've been using Hermes Web UI for a while and really like the project — great work! I'm new to open source contribution, so this is my first PR. Hope it's done right.

This PR adds two features:

1. Custom thinking animation — users can now upload and manage multiple animation files (GIF/WebP/MP4/WebM, up to 5) per profile, with a preview panel and toggle to enable/disable. This replaces the hardcoded thinking GIF with profile-level customization.

2. Configurable avatar size — avatar size is now adjustable per profile via a slider in the avatar modal (40-100px).

The PR has been rebased onto the latest main and the bodyParser conflict has been resolved (merged to 10mb, covering both avatar and animation upload needs).

Would be great to hear your feedback. Thanks!

@Andy365-365

Copy link
Copy Markdown
Contributor Author
已与 main 解决冲突。

注意到 Build workflow 存在部分测试失败,在 main 分支上同样复现了这些失败,看起来与本 PR 的改动无关。Playwright e2e 检查已通过。

@EKKOLearnAI

@Andy365-365 Andy365-365 force-pushed the feature/custom-thinking-animation branch from e32a39e to f67effa Compare June 12, 2026 14:38
Andy365-365 added a commit to Andy365-365/hermes-web-ui that referenced this pull request Jun 12, 2026
Add ability for users to customize the thinking animation displayed during
agent processing, supporting multiple animation files per profile.

Frontend:
- Add thinking animation modal in profile settings with preview pane
- Support uploading multiple files (up to 5) as GIF, WebP, MP4, WebM
- Multi-file selector: left preview + right thumbnail list layout
- Individual delete per item, select-to-switch active animation
- Disable thinking animation via toggle (hides indicator entirely)
- Add i18n keys for zh and en locales

Backend:
- Add PUT/DELETE /api/hermes/profiles/:name/thinking-animation routes
- Persist animation metadata as thinking-animation.json per profile
- Backward compatible: auto-migrate legacy single-url format to items array
- Read thinking animation alongside avatar in profile list/detail endpoints
- Increase body parser limit to 50MB to support large Base64-encoded GIFs

Chat:
- Replace hardcoded thinking GIF with profile-level custom animation
- Respect enableThinking toggle to show/hide the streaming indicator

API:
- New ProfileThinkingAnimation type with items[] and activeIndex fields
- New API methods: updateProfileThinkingAnimation, deleteProfileThinkingAnimation
- Store exposes updateThinkingAnimation and deleteThinkingAnimation
Add a slider in Display Settings to adjust the size of profile avatars
shown in chat messages (range: 24–80px, default: 40px).

- DisplayConfig: add optional avatar_size field
- DisplaySettings: add NSlider control with live preview
- MessageItem: bind avatar :size to settingsStore.display.avatar_size
- i18n: add avatarSize/avatarSizeHint for en and zh
@Andy365-365 Andy365-365 force-pushed the feature/custom-thinking-animation branch from 8bd8def to 2788b68 Compare June 18, 2026 11:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant