Saving the new documentation for the Launcher project plans. Finally moving this to a new version of Electron and pretty much starting from scratch.
This commit is contained in:
52
documentation/NATIVE_APP_DEPLOYMENT_PLAN.md
Normal file
52
documentation/NATIVE_APP_DEPLOYMENT_PLAN.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# Deployment & Update Plan: Aether Native V3
|
||||
|
||||
**Mechanism:** Syncthing + Admin Share
|
||||
**Target:** macOS Fleet
|
||||
**Primary Controller:** `admin_share` directory
|
||||
|
||||
## 1. Distribution via Syncthing
|
||||
We will leverage the existing Syncthing mesh to distribute binaries and configurations.
|
||||
|
||||
### 1.1 Directory Structure (Admin Share)
|
||||
```text
|
||||
admin_share/
|
||||
├── configs/
|
||||
│ └── seed_[DEVICE_ID].json # Specific seed files for auto-provisioning
|
||||
├── binaries/
|
||||
│ └── native_app/
|
||||
│ ├── version.json # Latest version metadata
|
||||
│ └── Aether_Native.app/ # The macOS App Bundle (or .zip)
|
||||
└── scripts/
|
||||
└── update_helper.sh # macOS script to swap binaries
|
||||
```
|
||||
|
||||
## 2. Self-Update Protocol
|
||||
The V3 app will monitor for updates without relying on external internet access (perfect for isolated event networks).
|
||||
|
||||
### 2.1 The Update Flow
|
||||
1. **Check:** On launch (and periodically), the app reads `admin_share/binaries/native_app/version.json`.
|
||||
2. **Compare:** If `version.json > package.json`, the app signals the user: "Update Available".
|
||||
3. **Stage:** The app copies the new `.app` bundle from the sync folder to a local `~/Library/Caches/Aether/updates/` directory.
|
||||
4. **Swap:** The app launches `update_helper.sh` and exits. The script moves the new version into `/Applications/` and restarts the app.
|
||||
|
||||
## 3. Provisioning (The "Seed" Strategy)
|
||||
To set up a new laptop:
|
||||
1. Install Syncthing and link the `admin_share`.
|
||||
2. The Electron app looks for `admin_share/configs/seed_$(hostname).json`.
|
||||
3. If found, it copies it to its local config path and bootstraps itself.
|
||||
4. **Result:** Zero manual configuration for the onsite tech.
|
||||
|
||||
## 4. macOS Specific Lifecycle
|
||||
- **Gatekeeper:** Since these are distributed via Syncthing, we must handle the "App is damaged or from an unidentified developer" prompt.
|
||||
- **Plan:** Include a `post-sync` script that runs `xattr -rd com.apple.quarantine` on the binary folder within the admin share (if permissions allow) or instructs the user on the first run.
|
||||
|
||||
## 5. Development Workflow (Arch Linux -> Mac)
|
||||
1. **Build:** On Arch Linux, run `npm run build:mac`.
|
||||
2. **Package:** Use `electron-packager` to create the macOS `.app` bundle.
|
||||
3. **Distribute:** Move the built `.app` into the local Syncthing `admin_share` folder.
|
||||
4. **Verify:** Watch the fleet of Macs automatically pull the update via Syncthing.
|
||||
|
||||
## 6. Project Document Updates
|
||||
The following files have been updated to reflect this deployment strategy:
|
||||
- `NATIVE_APP_V3_REWRITE_PLAN.md`: Added self-update logic requirements.
|
||||
- `NATIVE_BRIDGE_INTERFACE_SPEC.md`: Added `ae_sys.checkForUpdates()` method.
|
||||
Reference in New Issue
Block a user