fix(bridge): expose copy_from_cache_to_temp + harden launch_presentation

copy_from_cache_to_temp IPC handler was registered in file_handlers.ts
but never added to the preload bridge, making it unreachable from Svelte
despite being the documented preferred primitive for custom launch flows.

launch_presentation was the last handler still using osascript -e with
inline path injection. Converted to the temp-.scpt-file approach already
used by run_osascript and launch_from_cache — prevents breakage on
presentation filenames with spaces, quotes, or parentheses.

Also adds a pre-copy existence check to launch_from_cache so a missing
cache entry returns a meaningful error instead of a raw ENOENT.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Idem
2026-05-11 17:15:36 -04:00
parent c5a368aee5
commit ca4fddd57f
9 changed files with 62 additions and 35 deletions

View File

@@ -14,6 +14,7 @@ electron_1.contextBridge.exposeInMainWorld('aetherNative', {
open_local_file_v2: (path) => electron_1.ipcRenderer.invoke('native:open-local-file-v2', path),
check_cache: (args) => electron_1.ipcRenderer.invoke('native:check-cache', args),
download_to_cache: (args) => electron_1.ipcRenderer.invoke('native:download-to-cache', args),
copy_from_cache_to_temp: (args) => electron_1.ipcRenderer.invoke('native:copy-from-cache-to-temp', args),
launch_from_cache: (args) => electron_1.ipcRenderer.invoke('native:launch-from-cache', args),
launch_presentation: (args) => electron_1.ipcRenderer.invoke('native:launch-presentation', args),
control_presentation: (args) => electron_1.ipcRenderer.invoke('native:control-presentation', args),