Fix TypeScript build errors and configure Traefik deployment
Fix type mismatches across Unraid UI pages (SystemInfo, ServerVars, Notification properties), replace unavailable Mantine components (ScrollArea.Autosize, IconHardDrive), correct Orchis theme types, add missing tRPC endpoints (users, syslog, notification actions), and configure docker-compose for Traefik reverse proxy on dockerproxy network with unmarr.xtrm-lab.org routing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -31,7 +31,7 @@ import {
|
||||
import { notifications } from '@mantine/notifications';
|
||||
import {
|
||||
IconDatabase,
|
||||
IconHardDrive,
|
||||
IconDisc,
|
||||
IconTemperature,
|
||||
IconPlayerPlay,
|
||||
IconPlayerStop,
|
||||
@@ -93,7 +93,7 @@ function DiskDetailsRow({ disk }: { disk: ArrayDisk }) {
|
||||
variant="light"
|
||||
color={disk.spunDown ? 'gray' : getStatusColor(disk.status)}
|
||||
>
|
||||
<IconHardDrive size={14} />
|
||||
<IconDisc size={14} />
|
||||
</ThemeIcon>
|
||||
<div>
|
||||
<Text size="sm" weight={500}>
|
||||
@@ -530,7 +530,7 @@ export default function ArrayPage() {
|
||||
<Tabs.Tab value="parity" icon={<IconShield size={14} />}>
|
||||
Parity ({array.parities.length})
|
||||
</Tabs.Tab>
|
||||
<Tabs.Tab value="data" icon={<IconHardDrive size={14} />}>
|
||||
<Tabs.Tab value="data" icon={<IconDisc size={14} />}>
|
||||
Data Disks ({array.disks.length})
|
||||
</Tabs.Tab>
|
||||
<Tabs.Tab value="cache" icon={<IconCpu size={14} />}>
|
||||
@@ -647,7 +647,7 @@ export default function ArrayPage() {
|
||||
<tr key={device.id}>
|
||||
<td>
|
||||
<Group spacing="xs">
|
||||
<IconHardDrive size={14} />
|
||||
<IconDisc size={14} />
|
||||
<Text size="sm">{device.name}</Text>
|
||||
</Group>
|
||||
</td>
|
||||
|
||||
@@ -59,8 +59,8 @@ export default function IdentificationSettingsPage() {
|
||||
if (vars && !form.isTouched()) {
|
||||
form.setValues({
|
||||
name: vars.name || '',
|
||||
description: vars.comment || '',
|
||||
model: vars.flashProduct || '',
|
||||
description: vars.description || '',
|
||||
model: vars.model || '',
|
||||
timezone: vars.timezone || '',
|
||||
});
|
||||
}
|
||||
@@ -155,7 +155,7 @@ export default function IdentificationSettingsPage() {
|
||||
Linux Kernel
|
||||
</Text>
|
||||
<Text size="sm" weight={500}>
|
||||
{info?.versions.linux || 'Unknown'}
|
||||
{info?.os.kernel || 'Unknown'}
|
||||
</Text>
|
||||
</Group>
|
||||
|
||||
@@ -166,7 +166,7 @@ export default function IdentificationSettingsPage() {
|
||||
CPU
|
||||
</Text>
|
||||
<Text size="sm" weight={500}>
|
||||
{info?.cpu.model || 'Unknown'}
|
||||
{info?.cpu.brand || 'Unknown'}
|
||||
</Text>
|
||||
</Group>
|
||||
|
||||
@@ -177,7 +177,7 @@ export default function IdentificationSettingsPage() {
|
||||
Motherboard
|
||||
</Text>
|
||||
<Text size="sm" weight={500}>
|
||||
{info?.motherboard?.product || 'Unknown'}
|
||||
{info?.baseboard?.model || 'Unknown'}
|
||||
</Text>
|
||||
</Group>
|
||||
|
||||
@@ -207,19 +207,19 @@ export default function IdentificationSettingsPage() {
|
||||
</Stack>
|
||||
</Card>
|
||||
|
||||
{/* Flash Drive */}
|
||||
{/* Server Model */}
|
||||
<Card shadow="sm" radius="md" withBorder>
|
||||
<Title order={4} mb="md">
|
||||
Flash Drive
|
||||
Hardware
|
||||
</Title>
|
||||
|
||||
<Stack spacing="md">
|
||||
<Group position="apart">
|
||||
<Text size="sm" color="dimmed">
|
||||
Product
|
||||
Model
|
||||
</Text>
|
||||
<Text size="sm" weight={500}>
|
||||
{vars?.flashProduct || 'Unknown'}
|
||||
{vars?.model || 'Unknown'}
|
||||
</Text>
|
||||
</Group>
|
||||
|
||||
@@ -227,10 +227,10 @@ export default function IdentificationSettingsPage() {
|
||||
|
||||
<Group position="apart">
|
||||
<Text size="sm" color="dimmed">
|
||||
Vendor
|
||||
Protocol
|
||||
</Text>
|
||||
<Text size="sm" weight={500}>
|
||||
{vars?.flashVendor || 'Unknown'}
|
||||
{vars?.protocol || 'Unknown'}
|
||||
</Text>
|
||||
</Group>
|
||||
|
||||
@@ -238,10 +238,10 @@ export default function IdentificationSettingsPage() {
|
||||
|
||||
<Group position="apart">
|
||||
<Text size="sm" color="dimmed">
|
||||
GUID
|
||||
Port
|
||||
</Text>
|
||||
<Text size="sm" weight={500} style={{ fontFamily: 'monospace' }}>
|
||||
{vars?.flashGuid || 'Unknown'}
|
||||
{vars?.port || 'Unknown'}
|
||||
</Text>
|
||||
</Group>
|
||||
</Stack>
|
||||
|
||||
@@ -74,8 +74,8 @@ function getImportanceIcon(importance: NotificationImportance) {
|
||||
}
|
||||
}
|
||||
|
||||
function formatDate(timestamp: number): string {
|
||||
return new Date(timestamp * 1000).toLocaleDateString('en-US', {
|
||||
function formatDate(timestamp: string): string {
|
||||
return new Date(timestamp).toLocaleDateString('en-US', {
|
||||
year: 'numeric',
|
||||
month: 'short',
|
||||
day: 'numeric',
|
||||
|
||||
@@ -289,7 +289,7 @@ export default function DiagnosticsPage() {
|
||||
<Divider />
|
||||
<Group position="apart">
|
||||
<Text color="dimmed">Linux Kernel</Text>
|
||||
<Text weight={500}>{info?.versions.linux || 'Unknown'}</Text>
|
||||
<Text weight={500}>{info?.os.kernel || 'Unknown'}</Text>
|
||||
</Group>
|
||||
<Divider />
|
||||
<Group position="apart">
|
||||
@@ -309,7 +309,7 @@ export default function DiagnosticsPage() {
|
||||
<Divider />
|
||||
<Group position="apart">
|
||||
<Text color="dimmed">CPU</Text>
|
||||
<Text weight={500}>{info?.cpu.model || 'Unknown'}</Text>
|
||||
<Text weight={500}>{info?.cpu.brand || 'Unknown'}</Text>
|
||||
</Group>
|
||||
<Divider />
|
||||
<Group position="apart">
|
||||
|
||||
@@ -108,7 +108,7 @@ export default function SyslogPage() {
|
||||
error,
|
||||
refetch,
|
||||
} = api.unraid.syslog.useQuery(
|
||||
{ lines: 500 },
|
||||
undefined,
|
||||
{
|
||||
refetchInterval: autoScroll ? 5000 : false,
|
||||
}
|
||||
@@ -116,7 +116,7 @@ export default function SyslogPage() {
|
||||
|
||||
useEffect(() => {
|
||||
if (syslog) {
|
||||
setLines(syslog.lines || []);
|
||||
setLines(syslog || []);
|
||||
}
|
||||
}, [syslog]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user