From 0aa13a5e4bfe7b8edd051043f2d52f0f8319a8e8 Mon Sep 17 00:00:00 2001 From: teknium1 <127238744+teknium1@users.noreply.github.com> Date: Fri, 18 Sep 2026 01:52:05 -0700 Subject: [PATCH] fix(desktop): drop native title= from all 24 button sites the fixed guard flags MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Convert every ` diff --git a/apps/desktop/src/app/pet-overlay/pet-overlay-app.tsx b/apps/desktop/src/app/pet-overlay/pet-overlay-app.tsx index a8637d1814..a800adbd38 100644 --- a/apps/desktop/src/app/pet-overlay/pet-overlay-app.tsx +++ b/apps/desktop/src/app/pet-overlay/pet-overlay-app.tsx @@ -469,7 +469,6 @@ export function PetOverlayApp() { top: 0, width: 24 }} - title="Open in Hermes" type="button" > diff --git a/apps/desktop/src/app/settings/appearance-settings.tsx b/apps/desktop/src/app/settings/appearance-settings.tsx index 5f87600a84..1c3d062f16 100644 --- a/apps/desktop/src/app/settings/appearance-settings.tsx +++ b/apps/desktop/src/app/settings/appearance-settings.tsx @@ -589,7 +589,6 @@ export function AppearanceSettings() { setTheme(theme.name) } }} - title={a.removeTheme} type="button" > diff --git a/apps/desktop/src/app/settings/credential-key-ui.tsx b/apps/desktop/src/app/settings/credential-key-ui.tsx index 6b6d57650a..cd22aed474 100644 --- a/apps/desktop/src/app/settings/credential-key-ui.tsx +++ b/apps/desktop/src/app/settings/credential-key-ui.tsx @@ -122,7 +122,6 @@ export function KeyField({ disabled={busy} onClick={() => void onClear(varKey)} size="icon-xs" - title={t.settings.credentials.remove} type="button" variant="ghost" > diff --git a/apps/desktop/src/app/settings/custom-endpoints-settings.tsx b/apps/desktop/src/app/settings/custom-endpoints-settings.tsx index 6bf2bd312d..6213dc73e8 100644 --- a/apps/desktop/src/app/settings/custom-endpoints-settings.tsx +++ b/apps/desktop/src/app/settings/custom-endpoints-settings.tsx @@ -276,11 +276,11 @@ export function CustomEndpointsSettings({ onConfigSaved, onMainModelChanged }: C {endpoint.source !== 'direct-config' && ( )} {terminalDisconnect && ( - + + + )} diff --git a/apps/desktop/src/app/skills/mcp-tab.tsx b/apps/desktop/src/app/skills/mcp-tab.tsx index 1dfa9460ab..959405f0ee 100644 --- a/apps/desktop/src/app/skills/mcp-tab.tsx +++ b/apps/desktop/src/app/skills/mcp-tab.tsx @@ -1330,7 +1330,6 @@ function ServerConfig({ disabled={!saved} key={tool.name} onClick={() => onToggleTool(tool.name)} - title={on ? m.disableTool(tool.name) : m.enableTool(tool.name)} type="button" > {tool.name} diff --git a/apps/desktop/src/components/assistant-ui/thread/changed-files-card.tsx b/apps/desktop/src/components/assistant-ui/thread/changed-files-card.tsx index d0b061c191..f836164572 100644 --- a/apps/desktop/src/components/assistant-ui/thread/changed-files-card.tsx +++ b/apps/desktop/src/components/assistant-ui/thread/changed-files-card.tsx @@ -8,6 +8,7 @@ import { WIDGET_SHELL_CLASS } from '@/components/chat/widget-shell' import { DiffCount } from '@/components/ui/diff-count' import { FadeScroll } from '@/components/ui/fade-scroll' import { FileTypeIcon } from '@/components/ui/file-type-icon' +import { Tip } from '@/components/ui/tooltip' import { useI18n } from '@/i18n' import { displayPath } from '@/lib/display-path' import { cn } from '@/lib/utils' @@ -57,17 +58,17 @@ export const ChangedFilesCard: FC<{ parts: readonly unknown[] }> = ({ parts }) = {files.map(file => ( - + + + ))} diff --git a/apps/desktop/src/components/assistant-ui/thread/user-edit-composer.tsx b/apps/desktop/src/components/assistant-ui/thread/user-edit-composer.tsx index 460c464501..1e3c5246ef 100644 --- a/apps/desktop/src/components/assistant-ui/thread/user-edit-composer.tsx +++ b/apps/desktop/src/components/assistant-ui/thread/user-edit-composer.tsx @@ -921,7 +921,6 @@ export const UserEditComposer: FC = ({ cwd, gateway, sess // the edit silently never sends. The restore button guards the // same way. onPointerDown={event => event.preventDefault()} - title={copy.sendEdited} type="button" > {submitting ? StopGlyph : } diff --git a/apps/desktop/src/components/assistant-ui/thread/user-message.tsx b/apps/desktop/src/components/assistant-ui/thread/user-message.tsx index d77efc5e50..c35d5f71f6 100644 --- a/apps/desktop/src/components/assistant-ui/thread/user-message.tsx +++ b/apps/desktop/src/components/assistant-ui/thread/user-message.tsx @@ -10,6 +10,7 @@ import { type RestoreMessageTarget } from '@/components/assistant-ui/thread/type import { useMessageReactions } from '@/components/assistant-ui/thread/use-message-reactions' import { UserMessageText } from '@/components/assistant-ui/thread/user-message-text' import { Codicon } from '@/components/ui/codicon' +import { Tip } from '@/components/ui/tooltip' import { useResizeObserver } from '@/hooks/use-resize-observer' import { useI18n } from '@/i18n' import { triggerHaptic } from '@/lib/haptics' @@ -463,7 +464,6 @@ export const UserMessage: FC<{ triggerHaptic('selection') setExpanded(value => !value) }} - title={bodyClamped ? (expanded ? t.common.collapse : copy.expandMessage) : undefined} type="button" > {bubbleContent} @@ -511,33 +511,33 @@ export const UserMessage: FC<{ event.stopPropagation() void onCancel?.() }} - title={copy.stop} type="button" > {StopGlyph} ) : ( - + + + )} )} diff --git a/apps/desktop/src/components/chat/generated-image-result.tsx b/apps/desktop/src/components/chat/generated-image-result.tsx index f5fe3d2865..89d35e5470 100644 --- a/apps/desktop/src/components/chat/generated-image-result.tsx +++ b/apps/desktop/src/components/chat/generated-image-result.tsx @@ -134,9 +134,9 @@ export const GeneratedImage: FC<{ aspectRatio?: string; result?: unknown }> = ({ )} {src && ( ', + ' {\n event.preventDefault()\n }}\n // macOS doesn\'t focus a button on mousedown\n title={copy.send}\n type="button"\n>', + "', + '', + '', + '' + ] + + for (const source of flagged) { + expect(titleViolations(source, 'probe.tsx'), source).toHaveLength(1) + } + + for (const source of clean) { + expect(titleViolations(source, 'probe.tsx'), source).toEqual([]) + } + }) + + // Scan every shipped .tsx file under src/ for - + 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 100940ef80..f1d049ed4f 100644 --- a/apps/desktop/src/plugins/hermes-bots/group-chat-view.tsx +++ b/apps/desktop/src/plugins/hermes-bots/group-chat-view.tsx @@ -962,16 +962,18 @@ export function GroupChatWorkspace({ group, members, onBack, visible = true }: G } const attachButton = (thread: null | string) => ( - + + + ) // #91359: recognized @mentions render as inline references; recomputed @@ -1076,15 +1078,16 @@ export function GroupChatWorkspace({ group, members, onBack, visible = true }: G {isUser ? ( {label} ) : ( - + + + )} {relativeTime(entry.at)} {entry.text.trim() || !isUser ? ( diff --git a/apps/desktop/src/plugins/hermes-bots/skills-hub.tsx b/apps/desktop/src/plugins/hermes-bots/skills-hub.tsx index a681959971..164ea07ef9 100644 --- a/apps/desktop/src/plugins/hermes-bots/skills-hub.tsx +++ b/apps/desktop/src/plugins/hermes-bots/skills-hub.tsx @@ -252,11 +252,11 @@ export function HubSkillsSection({ forProfile, onInstalled }: HubSkillsSectionPr ✓ added ) : (