refactor(launcher): modularize launcher config and implement Phase 5 actuators

- Broke down the massive launcher_cfg.svelte into 7 modular sub-components.
- Updated electron_relay.ts with Phase 5 presentation controls and manifest tools.
- Updated architecture documentation to reflect the new TypeScript-based native bridge.
This commit is contained in:
Scott Idem
2026-01-26 16:18:00 -05:00
parent 7c14b1e3a2
commit 5f2ccf8823
12 changed files with 1306 additions and 1027 deletions

View File

@@ -7,39 +7,37 @@ The Aether Native App serves as the OS-level bridge for the SvelteKit frontend.
## 2. The Three-Layer Architecture
### 2.1 The Engine (`electron_native.js`)
* **Process:** Main Process (Node.js)
### 2.1 The Engine (`src/main/*.ts`)
* **Process:** Main Process (Node.js/TypeScript)
* **Role:** Performs the actual OS-level operations.
* **Key Responsibilities:**
* Executing shell commands via `child_process`.
* Managing the permanent Hashed Cache (`file_cache/`).
* Performing atomic "Safe Handover" copies to the operational `temp/` directory.
* Resolving global path placeholders like `[home]` and `[tmp]`.
* **Shell Handlers (`shell_handlers.ts`)**: Executing shell commands, AppleScripts, and process management.
* **File Handlers (`file_handlers.ts`)**: Managing the permanent Hashed Cache (`file_cache/`) and atomic Safe Handover.
* Resolving global path placeholders like `[home]` and `[tmp]` via `file_utils.ts`.
### 2.2 The Bridge (`preload.js`)
### 2.2 The Bridge (`src/preload/index.ts`)
* **Process:** Preload Script
* **Role:** The security gatekeeper.
* **Key Responsibilities:**
* Uses Electron's `contextBridge` to securely expose specific Main Process functions to the UI.
* Uses Electron's `contextBridge` to securely expose Main Process functions to the UI.
* Exposes the `window.aetherNative` object.
* Ensures that only whitelisted IPC channels can be triggered by the renderer.
### 2.3 The Messenger (`electron_relay.ts`)
### 2.3 The Messenger (`src/lib/electron/electron_relay.ts`)
* **Process:** Renderer Process (SvelteKit)
* **Role:** The TypeScript API used by Svelte components.
* **Key Responsibilities:**
* Detecting if the app is running in "Native Mode".
* Providing a clean, typed interface for native calls.
* Implementing "Smart Fallbacks" (e.g., resolving placeholders UI-side if the bridge is outdated).
* Standardizing IPC calls to snake_case.
* Implementing "Smart Fallbacks" (e.g., UI-side placeholder resolution if the bridge is inactive).
---
## 3. Core Lifecycle
1. **Seed Phase:** The Electron shell reads `~/seed.json` to identify the device.
2. **Hydration Phase:** The shell authenticates with the Aether V3 API to pull device-specific settings (room assignment, sync timers).
3. **Injection Phase:** The shell injects the **JWT (Auth Token)** and **Native Config** into the SvelteKit environment.
4. **Observation Phase:** `LauncherBackgroundSync.svelte` force-hydrates absolute OS paths (Home/Tmp) into the global `ae_loc` store for immediate use.
1. **Seed Phase:** The Electron shell reads `resources/seed_config.json` to identify the device.
2. **Hydration Phase:** The shell authenticates with the Aether V3 API to pull device-specific settings.
3. **Injection Phase:** The shell injects the **JWT** and **Native Config** into the SvelteKit environment.
4. **Observation Phase:** Background sync loops manage file warming and heartbeat telemetry.
---
@@ -48,17 +46,20 @@ The Aether Native App serves as the OS-level bridge for the SvelteKit frontend.
### File & Cache Management
- `check_cache({hash})`: Verify if a file exists in the hidden hashed storage.
- `download_to_cache({url, hash})`: Secure background download using the native API key.
- `launch_from_cache({hash, filename})`: **Safe Handover** — copies from cache to temp with the original name and triggers the launcher.
- `launch_from_cache({hash, filename})`: **Safe Handover** — copies from cache to temp with the original name and triggers the specialized launcher.
### OS Execution (The "Actuators")
- `launch_presentation({path, app})`: Intelligent application selection.
- `launch_presentation({path, app})`: Phase 5 specialized launcher with auto-focus (`activate`) and slideshow start.
- **Linux:** Triggers `libreoffice --impress`.
- **macOS:** Triggers AppleScript for Keynote/PowerPoint.
- `run_cmd({cmd})`: Executes raw shell commands with automatic `[home]` and `[tmp]` resolution.
- `kill_processes([names])`: Force-closes presentation apps to clean the podium between sessions.
- **macOS:** Triggers AppleScript for Keynote or PowerPoint.
- `control_presentation({app, action})`: Remote navigation for active decks.
- **Actions:** `next`, `prev`, `start`, `stop`.
- `run_cmd({cmd})`: Executes raw shell commands with automatic path resolution.
- `kill_processes([names])`: Force-closes apps to clean the podium.
### System Metadata
- `get_device_info()`: Provides OS version, CPU/RAM stats, and absolute system paths.
### Metadata & Discovery
- `get_device_info()`: Provides CPU/RAM stats and absolute system paths.
- `list_tools()`: Returns a JSON manifest of all available native functions for self-documentation.
---