Skip to content

feat: Thinking Animation Picker in Display Settings#286

Open
356252190-star wants to merge 3 commits into
EKKOLearnAI:mainfrom
356252190-star:feat/thinking-animation-v2
Open

feat: Thinking Animation Picker in Display Settings#286
356252190-star wants to merge 3 commits into
EKKOLearnAI:mainfrom
356252190-star:feat/thinking-animation-v2

Conversation

@356252190-star
Copy link
Copy Markdown
Contributor

Summary

Add a thinking animation picker in Display Settings that allows users to upload custom animations (GIF, MP4, WebM, MOV, AVI, MKV) to replace the default AI thinking animation.

Changes

New Files

  • packages/server/src/controllers/thinking-animation.ts — upload, serve, delete, status check
  • packages/server/src/routes/thinking-animation.ts — route definitions (public + protected)
  • packages/client/src/components/hermes/settings/ThinkingAnimationPicker.vue — upload UI component

Modified Files

  • packages/server/src/routes/index.ts — mount thinking-animation routes
  • packages/client/src/components/hermes/settings/DisplaySettings.vue — integrate picker
  • 8 i18n locale files — TA keys for all supported languages

Features

  • Supports GIF, MP4, WebM (native) + MOV, AVI, MKV (ffmpeg conversion to MP4)
  • Max file size: 100MB
  • Custom multipart parser (no external dependencies)
  • Path traversal protection via safePath
  • Auto-cleanup of old animation files on new upload
  • i18n support for all 8 languages

Security

  • GET /api/thinking-animation/status and GET /api/thinking-animation/file/:filename are public (needed for <img>/<video> src)
  • POST /api/thinking-animation/upload and DELETE /api/thinking-animation require authentication

Testing

  • Upload GIF → preview in settings
  • Upload MP4 → preview in settings
  • Reset to default animation
  • Auth check: POST/DELETE require token
  • Auth check: GET is public
  • i18n: language switching follows web-ui locale

* feat: add thinking-animation controller

* feat: add thinking-animation routes

* feat: mount thinking-animation routes

* feat: add ThinkingAnimationPicker component

* feat: integrate ThinkingAnimationPicker into DisplaySettings

* feat: add thinking animation i18n keys (en)

* feat: add thinking animation i18n keys (zh)

* feat: add thinking animation i18n keys (ja)

* feat: add thinking animation i18n keys (ko)

* feat: add thinking animation i18n keys (de)

* feat: add thinking animation i18n keys (fr)

* feat: add thinking animation i18n keys (es)

* feat: add thinking animation i18n keys (pt)
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