diff --git a/apps/desktop/src/plugins/hermes-bots/avatar-picker.tsx b/apps/desktop/src/plugins/hermes-bots/avatar-picker.tsx
index a997c1675a..f0f8772ad5 100644
--- a/apps/desktop/src/plugins/hermes-bots/avatar-picker.tsx
+++ b/apps/desktop/src/plugins/hermes-bots/avatar-picker.tsx
@@ -14,6 +14,7 @@ import {
RowButton,
SegmentedControl,
Textarea,
+ Tip,
useValue
} from '@hermes/plugin-sdk'
import { useState } from 'react'
@@ -147,33 +148,30 @@ export function AvatarPicker({ shape, color, image, onShape, onColor, onImage, g
{/* Silhouette pins: Auto (name decides) + the six blob kinds. */}
{['', ...BLOB_KINDS].map(k => (
- {
- onImage(null)
- onShape(blobShapeString(seedPart, k))
- }}
- style={{
- width: 44,
- height: 44
- }}
- title={k || b.editor.autoHint}
- >
- {k ? (
-
- ) : (
- {b.editor.auto}
- )}
-
+
+ {
+ onImage(null)
+ onShape(blobShapeString(seedPart, k))
+ }}
+ >
+ {k ? (
+
+ ) : (
+ {b.editor.auto}
+ )}
+
+
))}
@@ -218,24 +216,21 @@ export function AvatarPicker({ shape, color, image, onShape, onColor, onImage, g
{(blobatarSvg ? ['blobatar', ...AVATAR_PICKER_SHAPES] : AVATAR_PICKER_SHAPES).map(s => (
- {
- onImage(null)
- onShape(s)
- }}
- style={{
- width: 44,
- height: 44
- }}
- title={s === 'blobatar' ? b.avatar.blobFromName : undefined}
- >
-
-
+
+ {
+ onImage(null)
+ onShape(s)
+ }}
+ >
+
+
+
))}
-
- setChecked(prev => ({
- ...prev,
- [botRosterKey(bot)]: false
- }))
- }
- title={b.group.removeFromSelection}
- >
- {displayName(bot, botRosterMeta(bot, allMeta))}
-
-
+
+
+ setChecked(prev => ({
+ ...prev,
+ [botRosterKey(bot)]: false
+ }))
+ }
+ >
+ {displayName(bot, botRosterMeta(bot, allMeta))}
+
+
+
))}
diff --git a/apps/desktop/src/plugins/hermes-bots/cron.tsx b/apps/desktop/src/plugins/hermes-bots/cron.tsx
index 9f40b76117..166aac1a0b 100644
--- a/apps/desktop/src/plugins/hermes-bots/cron.tsx
+++ b/apps/desktop/src/plugins/hermes-bots/cron.tsx
@@ -554,7 +554,6 @@ export function RoutineRow({ job, onOpen, owner }: RoutineRowProps) {
onOpen?.(job)}
- title={c.manage}
>
{/* `--ui-success` rather than a literal emerald: the token is rotated
toward the accent, so a column of active dots can't fight the
diff --git a/apps/desktop/src/plugins/hermes-bots/group-chat-view.tsx b/apps/desktop/src/plugins/hermes-bots/group-chat-view.tsx
index e417eef23f..2a9aafe9b6 100644
--- a/apps/desktop/src/plugins/hermes-bots/group-chat-view.tsx
+++ b/apps/desktop/src/plugins/hermes-bots/group-chat-view.tsx
@@ -880,7 +880,6 @@ export function GroupChatWorkspace({ group, members, onBack, visible = true }: G
aria-expanded={activityOpen}
className="flex min-w-0 flex-1 items-center gap-1.5 px-2.5 py-1 text-left text-[0.7rem] text-(--ui-text-quaternary) transition-colors hover:text-foreground"
onClick={() => setActivityOpen(prev => !prev)}
- title={activityOpen ? b.group.hideActivity : b.group.showActivity}
>
{b.group.activity}
diff --git a/apps/desktop/src/plugins/hermes-bots/skills-hub.tsx b/apps/desktop/src/plugins/hermes-bots/skills-hub.tsx
index cecaa0d87a..4c09bc0ec9 100644
--- a/apps/desktop/src/plugins/hermes-bots/skills-hub.tsx
+++ b/apps/desktop/src/plugins/hermes-bots/skills-hub.tsx
@@ -6,7 +6,7 @@
* it reaches back into neither.
*/
-import { Button, host, Input, useI18n } from '@hermes/plugin-sdk'
+import { Button, Codicon, host, Input, useI18n } from '@hermes/plugin-sdk'
import { useEffect, useRef, useState } from 'react'
import { useBots } from './i18n'
@@ -244,7 +244,10 @@ export function HubSkillsSection({ bot, onInstalled }: HubSkillsSectionProps) {
) : null}
{installed[r.name] ? (
- ✓ {h.installed}
+
+
+ {h.installed}
+
) : (