* test: add user avatar API unit tests
* fix: resolve group-chat avatar by numeric userId instead of display name
Previously group-chat avatar resolution relied on findUserByUsername(),
which silently fails when the display name ('Mr. Tang') differs from the
login username ('admin'). Now the web UI passes the authenticated user's
numeric id via Socket.IO auth, so handleJoin() uses getUserAvatar(id)
directly. getRoomMembers() gains a fallback that queries any user with
a non-empty avatar, covering existing room members whose display names
don't match any login username.
* fix: show user avatar in group-chat header stack and member popover
GroupChatPanel.vue was rendering the user avatar with only :name,
forcing multiavatar fallback even when the member list carried a
custom avatar. Added userMemberAvatar computed that reads the
current user's avatar JSON from store.members, matching by userId.
Also added the missing 'avatar' field to the in-memory Member
interface and wired it through addOrUpdateMember / handleJoin so
the store actually sees member avatars.
* fix: cache current user avatar in group-chat store for no-room state
When no room is active, store.members is empty so the header
avatar falls back to multiavatar. Now connect() fetches the
current user's avatar via /api/auth/me and stores it in a ref.
GroupChatPanel.userMemberAvatar falls back to this cached value
when the member list doesn't have a match.
* fix: prevent group chat avatar mixups
* fix: complete user avatar settings coverage
---------
Co-authored-by: tangxuan <seizeday@yeah.net>
* feat: add session deep links for chats
* feat: add deep links for history and group chat
* Fix profile-aware session deep links
---------
Co-authored-by: Maxim Kirilyuk <werserk@inbox.ru>
* feat: support profile-aware group chat bridge flows
* feat: route cron jobs through hermes cli
* Fix group chat routing and isolate bridge tests
* Add Grok image-to-video media skill
* Default Grok videos to media directory
* Fix bridge profile fallback and cron repeat clearing
* Refine bridge chat and gateway platform handling
* Filter bridge tool-call text deltas
* Preserve structured bridge chat history
* Prepare beta release build artifacts
* Fix Windows run profile resolution
* Fix Windows path compatibility checks
* Fix profile-scoped model page display
* Hide Windows subprocess windows for jobs and updates
* Hide Windows file backend subprocess windows
* Avoid Windows gateway restart lock conflicts
* Treat Windows gateway lock as running on startup
* Force release Windows gateway lock on restart
* Tighten Windows gateway lock cleanup
* Update chat e2e source expectation
* Bump package version to 0.5.30
---------
Co-authored-by: Codex <codex@openai.com>