diff --git a/frontend-modern/src/components/Backups/UnifiedBackups.tsx b/frontend-modern/src/components/Backups/UnifiedBackups.tsx
index 6ea7f51..a84dfdb 100644
--- a/frontend-modern/src/components/Backups/UnifiedBackups.tsx
+++ b/frontend-modern/src/components/Backups/UnifiedBackups.tsx
@@ -2123,19 +2123,7 @@ const UnifiedBackups: Component = () => {
<>
| {
- let cols = 4; // Base: VMID, Type, Name, Time
- if (backupTypeFilter() === 'all' || backupTypeFilter() === 'remote') {
- // Owner - hidden on 2xl
- // We can't easily adjust colspan based on media query in JS without a hook.
- // For now, let's just set a high colspan or use a simpler approach.
- // A safer bet for responsive tables with colspans is to just set it to a large number like 100
- // provided the table layout handles it, or try to be accurate.
- // Given the complexity of responsive hiding, colspan=100 is often the easiest hack for full-width rows.
- return 20;
- }
- return 20;
- })()}
+ colspan={20 /* Full-width row across all responsive columns */}
class="py-1 pr-2 pl-3 text-[12px] sm:text-sm font-semibold text-slate-700 dark:text-slate-100"
>
diff --git a/frontend-modern/src/components/Dashboard/GuestDrawer.tsx b/frontend-modern/src/components/Dashboard/GuestDrawer.tsx
index 775b811..89fe0d6 100644
--- a/frontend-modern/src/components/Dashboard/GuestDrawer.tsx
+++ b/frontend-modern/src/components/Dashboard/GuestDrawer.tsx
@@ -2,7 +2,6 @@ import { Component, Show, For } from 'solid-js';
import { VM, Container } from '@/types/api';
import { formatBytes } from '@/utils/format';
import { DiskList } from './DiskList';
-import { IOMetric } from './IOMetric';
type Guest = VM | Container;
@@ -19,17 +18,17 @@ export const GuestDrawer: Component = (props) => {
const hasOsInfo = () => {
if (!isVM(props.guest)) return false;
- return (props.guest.osInfo?.name?.length ?? 0) > 0 || (props.guest.osInfo?.version?.length ?? 0) > 0;
+ return (props.guest.osName?.length ?? 0) > 0 || (props.guest.osVersion?.length ?? 0) > 0;
};
const osName = () => {
if (!isVM(props.guest)) return '';
- return props.guest.osInfo?.name || '';
+ return props.guest.osName || '';
};
const osVersion = () => {
if (!isVM(props.guest)) return '';
- return props.guest.osInfo?.version || '';
+ return props.guest.osVersion || '';
};
const hasAgentInfo = () => {
diff --git a/frontend-modern/src/components/Settings/Settings.tsx b/frontend-modern/src/components/Settings/Settings.tsx
index 204f04a..4d0b5b1 100644
--- a/frontend-modern/src/components/Settings/Settings.tsx
+++ b/frontend-modern/src/components/Settings/Settings.tsx
@@ -58,7 +58,6 @@ import Sliders from 'lucide-solid/icons/sliders-horizontal';
import RefreshCw from 'lucide-solid/icons/refresh-cw';
import Clock from 'lucide-solid/icons/clock';
import { ProxmoxIcon } from '@/components/icons/ProxmoxIcon';
-import Boxes from 'lucide-solid/icons/boxes';
import BadgeCheck from 'lucide-solid/icons/badge-check';
import type { NodeConfig } from '@/types/nodes';
import type { UpdateInfo, VersionInfo } from '@/api/updates';
@@ -320,6 +319,7 @@ type SettingsTab =
| 'proxmox'
| 'docker'
| 'hosts'
+ | 'agents'
| 'system-general'
| 'system-network'
| 'system-updates'
@@ -348,6 +348,10 @@ const SETTINGS_HEADER_META: Record = (props) => {
label="Hide local login form"
description="Hide the username/password form on the login page. Users will only see SSO options unless ?show_local=true is used."
checked={hideLocalLogin()}
- onChange={(e: ToggleChangeEvent) => handleHideLocalLoginChange(e.target.checked)}
+ onChange={(e: ToggleChangeEvent) => handleHideLocalLoginChange(e.currentTarget.checked)}
disabled={hideLocalLoginLocked() || savingHideLocalLogin()}
locked={hideLocalLoginLocked()}
lockedMessage="This setting is managed by the PULSE_AUTH_HIDE_LOCAL_LOGIN environment variable"
diff --git a/frontend-modern/src/components/Settings/UnifiedAgents.tsx b/frontend-modern/src/components/Settings/UnifiedAgents.tsx
index ddcfa55..37d53ed 100644
--- a/frontend-modern/src/components/Settings/UnifiedAgents.tsx
+++ b/frontend-modern/src/components/Settings/UnifiedAgents.tsx
@@ -1,4 +1,4 @@
-import { Component, createSignal, Show, For, onMount, createEffect, createMemo, onCleanup } from 'solid-js';
+import { Component, createSignal, Show, For, onMount, createEffect, createMemo } from 'solid-js';
import { useWebSocket } from '@/App';
import { Card } from '@/components/shared/Card';
import { formatRelativeTime, formatAbsoluteTime } from '@/utils/format';
@@ -302,7 +302,7 @@ export const UnifiedAgents: Component = () => {
const legacyAgents = createMemo(() => allHosts().filter(h => h.isLegacy));
const hasLegacyAgents = createMemo(() => legacyAgents().length > 0);
- const getUpgradeCommand = (hostname: string) => {
+ const getUpgradeCommand = (_hostname: string) => {
const token = resolvedToken();
return `curl -fsSL ${pulseUrl()}/install.sh | sudo bash -s -- --url ${pulseUrl()} --token ${token}`;
};
diff --git a/frontend-modern/src/components/shared/NodeSummaryTable.tsx b/frontend-modern/src/components/shared/NodeSummaryTable.tsx
index 9638fd8..7590a84 100644
--- a/frontend-modern/src/components/shared/NodeSummaryTable.tsx
+++ b/frontend-modern/src/components/shared/NodeSummaryTable.tsx
@@ -506,7 +506,7 @@ export const NodeSummaryTable: Component = (props) => {
style={{ 'grid-template-columns': gridTemplate() }}
>
- {(column, index) => (
+ {(column) => (
)}
diff --git a/frontend-modern/src/components/shared/Toggle.tsx b/frontend-modern/src/components/shared/Toggle.tsx
index 37e74df..a704293 100644
--- a/frontend-modern/src/components/shared/Toggle.tsx
+++ b/frontend-modern/src/components/shared/Toggle.tsx
@@ -87,6 +87,8 @@ interface LabeledToggleProps extends BaseToggleProps {
label?: JSX.Element;
description?: JSX.Element;
containerClass?: string;
+ locked?: boolean;
+ lockedMessage?: string;
}
export function Toggle(props: LabeledToggleProps) {
|