Commit Graph

160 Commits

Author SHA1 Message Date
Scott Idem
2c7b609295 Updated dist files 2026-05-13 19:09:09 -04:00
Scott Idem
1008a55ec3 Adjust Linux wallpaper test mode 2026-05-13 18:57:27 -04:00
Scott Idem
c8fdb8b1e7 Harden wallpaper downloads 2026-05-13 18:43:58 -04:00
Scott Idem
bb51771dc7 Expand wallpaper handling 2026-05-13 18:08:49 -04:00
Scott Idem
53d200f10e Version bump because things are in a good state. 2026-05-13 17:31:16 -04:00
Scott Idem
7693b12aeb Clarify native template bridge contract 2026-05-13 11:44:36 -04:00
Scott Idem
72d928f907 Rename launch payload to native_template 2026-05-13 11:28:09 -04:00
Scott Idem
9b98b454fd Align launcher terminology docs 2026-05-13 11:25:55 -04:00
Scott Idem
ec29a576d5 feat(deploy): add --fix-accessibility flag + document TCC requirement
macOS invalidates Accessibility permission whenever the app binary
changes (code signature shifts on each build). New --fix-accessibility
flag runs tccutil reset + a sudo sqlite3 TCC grant via SSH after the
.app is synced. Falls back gracefully if sqlite3 grant fails (SIP or
missing sudoers), logging a warning with a pointer to the manual steps.

README documents the symptom, manual fix, sudoers one-time setup,
and bundle ID (com.electron.aetherlauncher).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 14:09:34 -04:00
Scott Idem
1f90c819a0 docs(bridge): update types + docs for set_display_layout configStr
- Add set_display_layout (+ other missing system handler methods) to
  AetherNativeBridge interface in types.ts
- README: clarify configStr source (event_device.data_json) and
  no-op behaviour when absent
- TODO_AGENTS: correct 7z→bsdtar throughout; mark Electron-side
  set_display_layout items done; remove completed bsdtar doc item

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 13:36:38 -04:00
Scott Idem
9f76d6b7f4 Noting the warning about icons missing 2026-05-11 17:24:50 -04:00
Scott Idem
ca4fddd57f 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>
2026-05-11 17:15:36 -04:00
Scott Idem
c5a368aee5 chore: ignore builds.tar.gz 2026-05-11 17:07:22 -04:00
Scott Idem
b8199375a9 chore: ignore .playwright-mcp session artifacts 2026-05-11 16:59:47 -04:00
Scott Idem
bab08cd8a7 fix(packaging): workaround yauzl/Node 26 hang + fix API bootstrap contract
Packaging was silently hanging forever because yauzl 2.10.0 read streams
emit no data events under Node 26, causing extract-zip to block indefinitely
inside @electron/packager 20. Fix: postinstall script patches
@electron/packager/dist/unzip.js to use bsdtar (libarchive) instead.
bsdtar was chosen over 7z because 7z refuses chained symlinks in macOS
.app framework bundles. Both package:linux and package:mac now produce
correct output.

Also corrects the V3 API bootstrap contract in api_client.ts:
- SearchQuery body was wrapped in an extra {search_query: ...} layer — removed
- x-no-account-id header standardised to 'bypass'
- Redundant x-no-account-id removed from file download headers
- Smoke test rewritten to validate the real two-step bootstrap path

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 16:48:15 -04:00
Scott Idem
36aed19169 feat(launcher): thin primitive architecture + run_osascript hardening
- file_handlers: add script_template param to native:launch-from-cache
  (AppleScript or shell: prefix; falls back to hardcoded defaults when null)
- file_handlers: add native:copy-from-cache-to-temp as composable primitive
  (copies cached file to temp, returns path — caller handles launch logic)
- shell_handlers: harden native:run-osascript with temp .scpt file approach
  (replaces -e flag; handles multi-line scripts and paths with special chars)
- README: rewrite Native Bridge section — full method table, composable
  pattern example, configurable launch scripts note
- deploy/devices.conf: update IPs for devices 03-06, uncomment entries
2026-05-11 13:40:05 -04:00
Scott Idem
5b59dbc2da Old files for reference to help with AppleScript and related. 2026-04-20 17:02:46 -04:00
Scott Idem
002c27e73c fix(file_handlers): use keystroke Cmd+Return to start pptx slideshow
Replace unreliable AppleScript PowerPoint API (run slide show of settings)
with System Events keystroke approach, matching proven behavior from the
old MasterKey app. Opens the file, waits 3s for load, then sends Cmd+Return
to start the slideshow from slide 1.
2026-04-20 17:01:04 -04:00
Scott Idem
3feaf1bbc3 feat(deploy): add deploy script and per-device config files
deploy/deploy.sh — automated deploy: arch detection, scp .app, write
seed.json, verify. Supports single laptop, list, or "all"; --seed-only
flag skips .app copy for key-rotation runs.

deploy/devices.conf — all 19 laptops (num / IP / event_device_id).
deploy/event.env.example — template for gitignored event.env (API key).

README updated: deploy/ table, script usage, manual steps moved to
reference section.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 15:02:15 -04:00
Scott Idem
b8b7b253bb assets: add logo and icon files for packaging
Add OSIT logo images (PNG, ICO) and .icns icon used by electron-packager
when producing macOS .app bundles.
2026-04-20 14:27:05 -04:00
Scott Idem
b3f59b7bf5 docs: add onsite deployment guide and device reference table
- Step-by-step SSH deployment instructions (build, copy .app, write seed.json)
- Multi-laptop deployment loop example
- Device reference table: all 19 laptops with IPs and event_device_ids
- Clarify seed.json location, format, and per-event API key workflow
- Document architecture detection (x64 vs arm64) and SSH key setup
2026-04-20 14:26:54 -04:00
Scott Idem
01797f28aa fix: use correct protocol for app URL and suppress DevTools in production
- Use app_base_url from the device record directly instead of always
  falling back to localhost; use https for real domains and http for
  localhost dev URLs only.
- Suppress DevTools in packaged .app builds (app.isPackaged check)
  so they only open during development.
2026-04-20 14:26:43 -04:00
Scott Idem
2af6b3954b fix: write AppleScript to temp .scpt file instead of using -e flag
The -e flag approach breaks on multi-line AppleScript and on file paths
containing spaces or quote characters. Write the script to a temp file
in os.tmpdir() and invoke osascript with the file path instead. The
temp file is cleaned up after execution.
2026-04-20 14:26:34 -04:00
Scott Idem
5a5814b2bc build: add electron-packager and package:mac script
Add electron-packager as a dev dependency and a package:mac npm script
that compiles TypeScript and packages dual-arch (x64, arm64) macOS builds
into builds/ using the OSIT icon.
2026-04-20 14:24:17 -04:00
Scott Idem
0ebfcd18bb chore: ignore builds/ directory and seed config files
builds/ contains large compiled .app bundles (500MB+) not suitable for git.
seed_config.json contains API keys and must not be committed.
2026-04-20 14:24:06 -04:00
Scott Idem
2ad6bce8db fix: repair file_handlers.ts backtick escaping; update README
file_handlers.ts had AI-generated escaped backticks (\`) and template
literal dollar signs (\${) throughout, causing TypeScript compile errors
("Invalid character", "Unterminated template literal"). Fixed all 15
affected lines.

README updated: corrected seed config path from resources/seed_config.json
to ~/seed.json (external to app bundle by design), added explanation of
why it's kept external (no re-signing needed per device), and documented
the 2-char hash prefix cache layout with consistency warning.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 11:50:06 -04:00
Scott Idem
7c0bb6719d feat(file): implement hardened caching with SHA-256 verification
- Added .tmp -> .file download pattern with integrity checks.\n- Implemented auto-purge for stale temp files (>5 mins).\n- Added verify_hash support to check-cache handler.\n- Improved error handling for network interruptions.
2026-02-10 14:07:45 -05:00
Scott Idem
fb8af70742 feat: implement Phase 5 system handlers (automation, power, recording)
- Implement window control, wallpaper reset, and power management.
- Add Aperture recording wrapper and displayplacer layout control.
- Add self-update logic stub for local/remote sources.
- Register and expose handlers via context bridge.
2026-01-30 11:34:53 -05:00
Scott Idem
3d7aa1ab92 feat(native): implement Phase 5 AppleScript handlers and remote control
- Implemented specialized PowerPoint/Keynote handlers with auto-focus and slideshow start.
- Added native:control-presentation for remote navigation (next/prev/stop).
- Added native:list-tools handler for self-documenting the bridge API.
- Added a comprehensive project README.md.
2026-01-26 16:18:00 -05:00
Scott Idem
7784f7f2a3 chore: add VS Code workspace configuration with markdown linting overrides 2026-01-26 15:19:20 -05:00
Scott Idem
083fc56337 feat(bridge): implement presentation-aware handover and robust placeholder resolution
- Upgraded launch_from_cache to automatically trigger LibreOffice/AppleScript launchers after file copy.
- Hardened expandPath to resolve [home] and [tmp] placeholders anywhere in strings via global regex.
- Enhanced get-device-info telemetry to provide absolute home and tmp paths to the UI.
- Exposed native:launch-presentation in preload and implemented explicit LibreOffice (--impress) support on Linux.
2026-01-26 15:12:11 -05:00
Scott Idem
e942b234c4 Fix: Finalize Phase 3 OS interactions and telemetry bridge
- Implemented get_device_info for OS/Network telemetry.
- Added run_cmd_sync using execSync for blocking-style commands.
- Implemented kill_processes (plural) to support multiple process termination.
- Standardized open_local_file_v2 and all bridge methods to snake_case.
- Synchronized preload and main handlers with SvelteKit relay expectations.
2026-01-23 17:23:14 -05:00
Scott Idem
f6875acc72 Enhance: Support flexible hash prefix length and organized caching
- Updated organized path logic to accept variable prefix length.
- Refactored IPC handlers to pass hash_prefix_length from frontend.
- Standardized parameter structures for check-cache and download-to-cache.
2026-01-23 16:56:10 -05:00
Scott Idem
280de213c1 Fix: Standardize Electron bridge and implement robust caching
- Refactored all IPC methods and parameters to snake_case for consistency with SvelteKit.
- Implemented exhaustive background caching engine with download locking.
- Reverted to legacy-proven flat hash storage pattern (hash.file).
- Added axios for reliable stream-based binary downloads.
- Updated preload and main handlers to support recursive room data fetching.
2026-01-23 16:30:23 -05:00
Scott Idem
30db989b2c Enhance: Implement dynamic launcher URL and restore package.json
- Added logic to construct launcher URL based on hydrated device context.
- Implemented dev/production host fallback for demo.localhost.
- Restored missing package.json with proper start and build scripts.
- Finalized IPC handlers for seed and device configuration.
2026-01-23 14:08:31 -05:00
Scott Idem
0497f5767b Initial scaffold for Aether Native V3 Electron Launcher 2026-01-23 13:54:20 -05:00
Scott Idem
fdbd12b64f First iteration of the conversion to use SvelteKit. 2024-08-14 19:26:39 -04:00
Scott Idem
54ae460da5 Unknown 2023-07-27 09:12:44 -04:00
9a7b2b4089 Clean up of code. Prep for simplify later. 2023-06-03 01:34:55 -04:00
5e04deab9c Clean up and simplify the initial loading. This needs more testing. 2023-06-03 01:09:16 -04:00
Scott Idem
99984e7b6c Making file check more efficent. 2023-05-26 18:50:52 -04:00
Scott Idem
fb02fc80a0 Making things easier. 2023-05-26 17:06:38 -04:00
Scott Idem
bc4bf6d294 Making things easier. 2023-05-26 15:20:32 -04:00
Scott Idem
29111e8dce Work on the config and setup 2023-05-24 22:16:26 -04:00
Scott Idem
a25978cf6f No longer using the macOS config path. 2023-05-14 16:03:12 -04:00
Scott Idem
6c7a81f915 Version bump 2023-05-14 15:05:04 -04:00
Scott Idem
9f9ad8b1bb More robust loading. General clean up 2023-05-14 15:03:27 -04:00
Scott Idem
75c5d289cf More robust loading 2023-05-14 14:56:17 -04:00
Scott Idem
4870a56dad Clean up of config 2023-04-24 21:27:45 -04:00
Scott Idem
86feb8517a Getting ready for BG 2023-04-24 18:46:40 -04:00