Add fleet groups, agent screenshots, deploy guards, and Crucible polish.

This commit is contained in:
AetherForge
2026-06-02 20:51:52 -07:00
parent 01d76b3730
commit 41b5ec7a88
66 changed files with 1773 additions and 388 deletions

View File

@@ -10,6 +10,7 @@ interface Props {
selectedCount: number;
onBulkAction: (action: string) => void;
onSelectAllFiltered?: () => void;
onCreateGroup?: () => void;
filteredCount?: number;
bulkBusy: boolean;
}
@@ -21,6 +22,7 @@ export default function FleetToolbar({
selectedCount,
onBulkAction,
onSelectAllFiltered,
onCreateGroup,
filteredCount,
bulkBusy,
}: Props) {
@@ -93,6 +95,27 @@ export default function FleetToolbar({
{selectedCount > 0 && (
<div className="fleet-bulk-bar">
<span className="font-tech">{selectedCount} selected</span>
{onCreateGroup && (
<button
type="button"
className="btn btn-primary btn-sm"
disabled={bulkBusy}
onClick={onCreateGroup}
>
Create group
</button>
)}
{selectedCount === 1 && (
<button
type="button"
className="btn btn-outline btn-sm"
disabled={bulkBusy}
onClick={() => onBulkAction('screenshot')}
title="Capture desktop on the selected machine and download JPEG here"
>
Screenshot
</button>
)}
<button type="button" className="btn btn-outline btn-sm" disabled={bulkBusy} onClick={() => onBulkAction('pause')}>Pause</button>
<button type="button" className="btn btn-outline btn-sm" disabled={bulkBusy} onClick={() => onBulkAction('resume')}>Resume</button>
<button type="button" className="btn btn-outline btn-sm" disabled={bulkBusy} onClick={() => onBulkAction('stop')}>Stop</button>