This commit is contained in:
seb
2026-10-06 00:19:28 +02:00
parent 96f8da8c64
commit fdb43ecfd8
2 changed files with 41 additions and 22 deletions

View File

@@ -508,7 +508,7 @@ export default class ChatDrawer extends PureComponent {
placeholder={ placeholder={
pendingAsk pendingAsk
? 'Bitte Frage oben beantworten…' ? 'Bitte Frage oben beantworten…'
: 'Nachricht eingeben…' : undefined
} }
/> />
@@ -544,10 +544,6 @@ export default class ChatDrawer extends PureComponent {
)} )}
</IconButton> </IconButton>
</Box> </Box>
<Typography variant="caption" sx={{ color: 'text.disabled', fontSize: '0.68rem', textAlign: 'center' }}>
Enter zum Senden • Shift+Enter für Zeilenumbruch
</Typography>
</Box> </Box>
); );
} }

View File

@@ -6,6 +6,10 @@ import ClickAwayListener from '@mui/material/ClickAwayListener';
import HandshakeRoundedIcon from '@mui/icons-material/HandshakeRounded'; import HandshakeRoundedIcon from '@mui/icons-material/HandshakeRounded';
import PsychologyRoundedIcon from '@mui/icons-material/PsychologyRounded'; import PsychologyRoundedIcon from '@mui/icons-material/PsychologyRounded';
import BuildRoundedIcon from '@mui/icons-material/BuildRounded'; import BuildRoundedIcon from '@mui/icons-material/BuildRounded';
import SearchRoundedIcon from '@mui/icons-material/SearchRounded';
import ComputerRoundedIcon from '@mui/icons-material/ComputerRounded';
import ImageSearchRoundedIcon from '@mui/icons-material/ImageSearchRounded';
import CompareRoundedIcon from '@mui/icons-material/CompareRounded';
import HealingMarkdown from './HealingMarkdown'; import HealingMarkdown from './HealingMarkdown';
import { import {
CHROMA, CHROMA,
@@ -14,6 +18,13 @@ import {
SURFACE_RAISED, SURFACE_RAISED,
} from '../../colors'; } from '../../colors';
const TOOL_ICON_MAP = {
find_files: SearchRoundedIcon,
javascript_execute: ComputerRoundedIcon,
search_images: ImageSearchRoundedIcon,
analyze_image: CompareRoundedIcon,
};
function formatMessageTime(isoString) { function formatMessageTime(isoString) {
if (!isoString) return ''; if (!isoString) return '';
try { try {
@@ -45,9 +56,13 @@ function formatUsageText(usage) {
return `${fmt(input)} Prompt${cachedPart} · ${fmt(output)} Antwort${cost}`; return `${fmt(input)} Prompt${cachedPart} · ${fmt(output)} Antwort${cost}`;
} }
function formatToolTooltip(content, result, parameters) { function formatToolTooltip(content, result, parameters, prefix) {
const parts = []; const parts = [];
if (prefix) {
parts.push(prefix);
}
if (parameters !== undefined && parameters !== null && parameters !== '') { if (parameters !== undefined && parameters !== null && parameters !== '') {
try { try {
const parsed = typeof parameters === 'string' ? JSON.parse(parameters) : parameters; const parsed = typeof parameters === 'string' ? JSON.parse(parameters) : parameters;
@@ -202,7 +217,9 @@ function BrainIconView({ reasoning }) {
function WorkIconView({ tool }) { function WorkIconView({ tool }) {
const isGreen = tool?.state === 'green'; const isGreen = tool?.state === 'green';
const tooltipText = formatToolTooltip(tool?.content, tool?.result, tool?.parameters); const ToolNameIcon = tool?.name ? TOOL_ICON_MAP[tool.name] : null;
const prefix = ToolNameIcon ? tool?.name : null;
const tooltipText = formatToolTooltip(tool?.content, tool?.result, tool?.parameters, prefix);
return ( return (
<ClickTooltip <ClickTooltip
@@ -237,21 +254,27 @@ function WorkIconView({ tool }) {
}, },
}} }}
> >
<BuildRoundedIcon sx={{ fontSize: 18, color: 'inherit' }} /> {ToolNameIcon ? (
{tool?.name ? ( <ToolNameIcon sx={{ fontSize: 18, color: 'inherit' }} />
<Typography ) : (
component="span" <>
sx={{ <BuildRoundedIcon sx={{ fontSize: 18, color: 'inherit' }} />
fontFamily: 'monospace', {tool?.name ? (
fontSize: '0.75rem', <Typography
fontWeight: 600, component="span"
color: 'text.secondary', sx={{
lineHeight: 1, fontFamily: 'monospace',
}} fontSize: '0.75rem',
> fontWeight: 600,
{tool.name} color: 'text.secondary',
</Typography> lineHeight: 1,
) : null} }}
>
{tool.name}
</Typography>
) : null}
</>
)}
</Box> </Box>
</ClickTooltip> </ClickTooltip>
); );