- Remove tmp_shell_handlers.ts from SvelteKit repo — this was a draft of the
Electron main-process shell handler that was placed in the wrong repo. It used
ipcMain (Electron main-process only) and could never run in SvelteKit. Was not
imported anywhere but was misleading.
- Fix src/lib/electron/README.md:
- Correct broken doc link (was AE_EVENTS_LAUNCHER_NATIVE_INTEGRATION.md,
actual filename is PROJECT__AE_Events_Launcher_Native_integration.md)
- Mark electron_native.js as DEPRECATED — do not import (was described as
active "Bridge Logic", which was incorrect and confusion-causing)
- Add clear bridge architecture diagram showing the three-layer flow
- Note that aether_app_native_electron/ is the active Electron repo
- Update PROJECT__AE_Events_Launcher_Native_integration.md:
- Fix Layer 1 file path: aether_app_native/ → aether_app_native_electron/
- Section 5.3: Phase 5 actuators are all implemented, not "planned" — update
recording, display layout, power control, window control, wallpaper to reflect
actual implementation status; note update_app is a stub
- Section 7: Expand IPC whitelist to cover all relay functions including new
cleanup_tmp_files, system handlers, and full parameter signatures
- Document get_seed_config / get_jwt as intentionally not relayed to UI
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Aether Native Integration (Electron)
This directory contains the SvelteKit-side bridge for the Aether Native App (Electron). It provides the UI with access to OS-level capabilities required for the Event Launcher.
The native implementation lives in a separate repo:
~/OSIT_dev/aether_app_native_electron/
Technical Manual
For detailed architecture, lifecycle, and IPC specifications, see: PROJECT__AE_Events_Launcher_Native_integration.md
File Manifest
| File | Role | Description |
|---|---|---|
electron_relay.ts |
Active — Messenger | The TypeScript API used by Svelte components. Standardizes all IPC calls to snake_case. This is the only file in this directory that should be imported. |
electron_native.js |
DEPRECATED — Do not import | Legacy V2/V4 reference file. The active native logic lives in aether_app_native_electron/. Kept for historical reference only. |
Usage Example
import { is_native, launch_from_cache } from '$lib/electron/electron_relay';
if (is_native) {
await launch_from_cache({
cache_root: $ae_loc.local_file_cache_path,
hash: file_obj.hash_sha256,
temp_root: $ae_loc.host_file_temp_path,
filename: file_obj.filename
});
}
Security Model
- All native functions are accessed via
window.aetherNative(contextBridge) - Only explicitly whitelisted IPC channels are exposed — no arbitrary code execution
- Path isolation: all file operations use
[home]/[tmp]placeholders resolved by the native bridge - Context isolation is enabled; Node integration is disabled in the renderer
Bridge Architecture (Three Layers)
Svelte Component
└── electron_relay.ts (this directory — typed wrappers, snake_case API)
└── window.aetherNative (contextBridge whitelist in preload/index.ts)
└── ipcMain handlers (aether_app_native_electron/src/main/*.ts)