diff --git a/documentation/TODO__Agents.md b/documentation/TODO__Agents.md index ee7691d8..06da39f8 100644 --- a/documentation/TODO__Agents.md +++ b/documentation/TODO__Agents.md @@ -9,8 +9,10 @@ `run_osascript` / `run_cmd` directly with per-step error handling. Complete. - [x] **[Launcher] Slide control scripts in Svelte config** — AppleScript post_scripts live in `ae_launcher__default_launch_profiles.ts`. VLC focus-stealing fix applied. Complete. -- [ ] **[Launcher] `kill_processes` target list in config** — Implement UI for manual "Kill Apps" - button and auto-cleanup on file open. +- [x] **[Launcher] Kill Apps button** — "Kill Apps" button added to Native OS config (System + Actions, edit mode only). Kills PowerPoint, Keynote, Adobe Acrobat Reader DC, VLC, soffice. + List overridable via `event_device.other_json.launcher.kill_process_li`. Auto-cleanup on file + open (deferred — manual button sufficient for CMSC). - [ ] **[Launcher] End-to-end test on macOS** — test pptx and key opens on a real podium Mac. - [ ] **[Launcher/Electron] Wallpaper stops applying after several changes (post-CMSC)** — Append timestamp/random suffix to temp filename so macOS always sees a new path. diff --git a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_native_os.svelte b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_native_os.svelte index 1d69a68b..1f032ac4 100644 --- a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_native_os.svelte +++ b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_native_os.svelte @@ -17,7 +17,8 @@ import { RefreshCw, SkipBack, SkipForward, - Square + Square, + XCircle } from '@lucide/svelte'; interface Props { on_expand?: () => void; @@ -69,6 +70,27 @@ async function handle_display_mode(mode: 'extend' | 'mirror') { setTimeout(() => (system_status = ''), 4000); } +// Process names sent to kill_processes() when the operator hits "Kill Apps". +// Covers the standard conference presentation app set — PowerPoint, Keynote, Acrobat, VLC, LibreOffice. +// Override per device via event_device.other_json.launcher.kill_process_li. +const DEFAULT_KILL_LIST = [ + 'Microsoft PowerPoint', + 'Keynote', + 'Adobe Acrobat Reader DC', + 'VLC', + 'soffice' +]; + +async function handle_kill_apps() { + const native_device = ($ae_loc as any).native_device ?? null; + const process_name_li: string[] = + native_device?.other_json?.launcher?.kill_process_li ?? DEFAULT_KILL_LIST; + system_status = `Killing: ${process_name_li.join(', ')}...`; + await native.kill_processes({ process_name_li }); + system_status = 'Kill signal sent'; + setTimeout(() => (system_status = ''), 4000); +} + // Modal state for dangerous actions let show_power_confirm = $state<{ action: string; label: string } | null>(null); @@ -240,6 +262,16 @@ let show_power_confirm = $state<{ action: string; label: string } | null>(null); disabled={!$ae_loc.site_header_image_path}> Reset Wallpaper + +