admin/logs: icons tooltip now shows the simple name, while the raw user-agent has been moved to the dialog
Massimo Melina committed
Feb 17, 2026 at 11:49 UTC
776c3eb744eaef133e2f670abcbd47646acc39d1
3 files changed
+23
-13
admin/src/DataTable.ts
+1
-1
@@ -168,7 +168,7 @@ export function DataTable({ columns, initialState={}, actions, actionsProps, ini
168
if (window.getSelection()?.type === 'Range') return // not a click but a drag
169
const visibleInList = merged + apiRef.current.getVisibleColumns().length
170
const showInDialog = manipulatedColumns.filter(x =>
171
- !x.dialogHidden && (x.renderCell || x.field === ACTIONS || row[x.field] !== undefined))
171
+ !x.dialogHidden && (x.renderCell || x.valueGetter || x.field === ACTIONS || row[x.field] !== undefined))
172
if (showInDialog.length <= visibleInList) return // no need for dialog
173
newDialog({
174
title: "Details",
admin/src/LogsPage.ts
+21
-11
@@ -328,6 +328,13 @@ export function LogFile({ file, footerSide, hidden, limit, filter, ...rest }: Lo
328
return "API " + name + params
329
}
330
},
331
+ {
332
+ field: 'agentText',
333
+ valueGetter: ({ row }) => row.extra?.ua,
334
+ headerName: "Agent text",
335
+ flex: 2,
336
+ hideUnder: true,
337
+ },
338
]
339
})
340
@@ -356,7 +363,7 @@ export function LogFile({ file, footerSide, hidden, limit, filter, ...rest }: Lo
363
}
364
365
const UW = 'https://upload.wikimedia.org/wikipedia/commons/'
359
-const BROWSER_ICONS = {
366
+const CLIENT_ICONS = {
367
Chrome: UW + 'e/e1/Google_Chrome_icon_%28February_2022%29.svg',
368
Chromium: UW + 'f/fe/Chromium_Material_Icon.svg',
369
Firefox: UW + 'a/a0/Firefox_logo%2C_2019.svg',
@@ -368,24 +375,26 @@ const BROWSER_ICONS = {
375
ForkLift: UW + '../en/9/96/ForkLift_3_File_Manager_and_File_Transfer_Client_Logo.png',
376
}
377
const OS_ICONS = {
371
- android: UW + 'd/d7/Android_robot.svg',
372
- linux: UW + '0/0a/Tux-shaded.svg',
373
- win: UW + '0/0a/Unofficial_Windows_logo_variant_-_2002%E2%80%932012_%28Multicolored%29.svg',
374
- apple: UW + '7/74/Apple_logo_dark_grey.svg', // grey works for both themes
378
+ Android: UW + 'd/d7/Android_robot.svg',
379
+ Linux: UW + '0/0a/Tux-shaded.svg',
380
+ Windows: UW + '0/0a/Unofficial_Windows_logo_variant_-_2002%E2%80%932012_%28Multicolored%29.svg',
381
+ macOS: UW + '7/74/Apple_logo_dark_grey.svg', // grey works for both themes
382
+ iOS: UW + '7/74/Apple_logo_dark_grey.svg', // grey works for both themes
383
}
384
const OSS = {
377
- apple: /Mac OS|iPhone OS|Darwin/,
378
- win: /Windows NT/,
379
- android: /Android/,
380
- linux: /Linux/,
385
+ iOS: /iPhone OS|iPad/,
386
+ macOS: /Mac OS|Darwin/,
387
+ Windows: /Windows NT/,
388
+ Android: /Android/,
389
+ Linux: /Linux/,
390
}
391
392
export function agentIcons(agent: string | undefined) {
393
if (!agent) return
394
const short = shortenAgent(agent)
386
- const browserIcon = h(AgentIcon, { k: short, altText: true, map: BROWSER_ICONS })
395
+ const browserIcon = h(AgentIcon, { k: short, altText: true, map: CLIENT_ICONS })
396
const os = _.findKey(OSS, re => re.test(agent))
388
- return hTooltip(agent, undefined, h(Box, { fontSize: '110%' }, browserIcon, ' ', os && osIcon(os as any)) )
397
+ return h(Box, { fontSize: '110%' }, browserIcon, ' ', os && osIcon(os as any))
398
}
399
400
const alreadyFailed: any = {}
@@ -400,6 +409,7 @@ function AgentIcon({ k, map, altText }: { k: string, map: Dict<string>, altText?
409
return !src || err ? h(Fragment, {}, altText ? k : null) : h('img', {
410
src,
411
alt: k + " icon",
412
+ title: k,
413
style: { height: '1.2em', verticalAlign: 'bottom', marginRight: '.2em' },
414
onError() { setErr(alreadyFailed[k] = true) }
415
})
admin/src/VfsMenuBar.ts
+1
-1
@@ -74,7 +74,7 @@ function SystemIntegrationButton({ platform }: { platform: string | undefined })
74
const { data: integrated, reload } = useApi<typeof adminApis.windows_integrated>(isWindows && 'windows_integrated')
75
const sm = useBreakpoint('sm')
76
return !isWindows ? null : h(Btn, {
77
- icon: osIcon('win'),
77
+ icon: osIcon('Windows'),
78
variant: 'outlined',
79
doneMessage: true,
80
...(!integrated?.is ? {