feat(launcher): configurable launch scripts + composable native primitives

- electron_relay: type launch_from_cache with script_template param;
  add copy_from_cache_to_temp export; add JSDoc for run_osascript hardening
- launcher_file_cont: add get_launch_script_template() helper reading from
  device-level (event_device.data_json.launch_scripts) and event-level
  (events_loc.launcher.launch_scripts) config; wire into handle_open_file()
- PROJECT__AE_Events_Launcher_Native_integration.md: add Section 8
  (Configurable Launch Scripts); update IPC reference for new/changed handlers
- MODULE__AE_Events_PressMgmt_Launcher.md: add configurable launch behavior
  note to Native Mode Safe Handover section
This commit is contained in:
Scott Idem
2026-05-11 13:48:54 -04:00
parent 8ed7e0f8d7
commit c5c5292715
4 changed files with 180 additions and 6 deletions

View File

@@ -311,6 +311,13 @@ The Electron app zero-configs itself:
3. Rename to original filename (e.g., `Abstract_101.pptx`)
4. OS opens the file (Keynote, PowerPoint, Preview, etc.)
**Configurable launch behavior:** The open/launch command in step 4 can be overridden
per file extension via `event_device.data_json.launch_scripts` (device-level config) or
`event.launcher.launch_scripts` (event-level fallback). Templates use `{{path}}` as the
file path placeholder; AppleScript or `shell:` prefixed commands are both supported. No
Electron rebuild required to change how files open — edit config in Aether and it applies
immediately. See `PROJECT__AE_Events_Launcher_Native_integration.md` Section 8.
Versioning is handled automatically: when a presenter uploads an updated file, the new
hash is cached separately and the old one remains intact.