Windows Host Agent Enhancements: - Implement native Windows service support using golang.org/x/sys/windows/svc - Add Windows Event Log integration for troubleshooting - Create professional PowerShell installation/uninstallation scripts - Add process termination and retry logic to handle Windows file locking - Register uninstall endpoint at /uninstall-host-agent.ps1 Host Agent UI Improvements: - Add expandable drawer to Hosts page (click row to view details) - Display system info, network interfaces, disks, and temperatures in cards - Replace status badges with subtle colored indicators - Remove redundant master-detail sidebar layout - Add search filtering for hosts Technical Details: - service_windows.go: Windows service lifecycle management with graceful shutdown - service_stub.go: Cross-platform compatibility for non-Windows builds - install-host-agent.ps1: Full Windows installation with validation - uninstall-host-agent.ps1: Clean removal with process termination and retries - HostsOverview.tsx: Expandable row pattern matching Docker/Proxmox pages Files Added: - cmd/pulse-host-agent/service_windows.go - cmd/pulse-host-agent/service_stub.go - scripts/install-host-agent.ps1 - scripts/uninstall-host-agent.ps1 - frontend-modern/src/components/Hosts/HostsOverview.tsx - frontend-modern/src/components/Hosts/HostsFilter.tsx The Windows service now starts reliably with automatic restart on failure, and the uninstall script handles file locking gracefully without requiring reboots.
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
import type { Component, JSX } from 'solid-js';
|
|
import { Show } from 'solid-js';
|
|
|
|
interface AgentStepSectionProps {
|
|
step: string;
|
|
title: string;
|
|
description?: string;
|
|
children: JSX.Element;
|
|
}
|
|
|
|
export const AgentStepSection: Component<AgentStepSectionProps> = (props) => {
|
|
return (
|
|
<section class="space-y-5">
|
|
<header class="space-y-2">
|
|
<div class="flex items-center gap-2">
|
|
<span class="inline-flex items-center justify-center w-7 h-7 rounded-full bg-blue-100 dark:bg-blue-900/30 text-xs font-bold text-blue-700 dark:text-blue-300">
|
|
{props.step.replace('Step ', '')}
|
|
</span>
|
|
<h3 class="text-lg font-semibold text-gray-900 dark:text-gray-100">
|
|
{props.title}
|
|
</h3>
|
|
</div>
|
|
<Show when={props.description}>
|
|
<p class="text-sm text-gray-600 dark:text-gray-400 leading-relaxed ml-9">
|
|
{props.description}
|
|
</p>
|
|
</Show>
|
|
</header>
|
|
<div class="ml-9">{props.children}</div>
|
|
</section>
|
|
);
|
|
};
|
|
|
|
export default AgentStepSection;
|