refactor: migrate from UXP to CEP for After Effects 2026 compatibility#1
Merged
Conversation
Collaborator
Abdullahi-Model
commented
May 14, 2026
- Replace UXP manifest.json with CSXS/manifest.xml (CEP panel)
- Create CEP bridge layer (src/cep/ae-bridge.ts) wrapping ExtendScript via CSInterface.evalScript()
- Convert all ae/ module files to use async bridge instead of direct AE globals
- Replace require('os') and require('uxp').storage with bridge file operations
- Add XMLHttpRequest fallback in ApiClient for CORS from file:// origins
- Add CEFCommandLine flags for CORS bypass in CEP Chromium
- Switch build from tsc to esbuild (IIFE bundle for script tag loading)
- Add automated setup.sh for one-command install via CEP extensions
- Add simplified hello-world CEP example (simple-hello-plugin/)
- Update index.html for CEP script loading (non-module)
- Replace UXP manifest.json with CSXS/manifest.xml (CEP panel)
- Create CEP bridge layer (src/cep/ae-bridge.ts) wrapping ExtendScript via CSInterface.evalScript()
- Convert all ae/ module files to use async bridge instead of direct AE globals
- Replace require('os') and require('uxp').storage with bridge file operations
- Add XMLHttpRequest fallback in ApiClient for CORS from file:// origins
- Add CEFCommandLine flags for CORS bypass in CEP Chromium
- Switch build from tsc to esbuild (IIFE bundle for script tag loading)
- Add automated setup.sh for one-command install via CEP extensions
- Add simplified hello-world CEP example (simple-hello-plugin/)
- Update index.html for CEP script loading (non-module)
- Fix middleware priority in Laravel backend (AuthenticateApiKey before Sanctum) - Update default API URL to local test instance - Fix api-client: remove Content-Type on GET, add safe error parsing - Fix testConnection/listProjects to handle Laravel paginated responses - Add generation/export endpoints (image, video, voice, sfx, export) - Fix ae-bridge: use CEP fs for binary I/O, remove broken ExtendScript eval - Remove invalid ScriptPath from CEP manifest.xml - Add generation/export TypeScript interfaces
- Make CEP fs API check lenient (try both BASE64/Base64 encoding constants) - Add ExtendScript hex-encoding fallback for binary writes when CEP fs unavailable - Add 512KB size guard for ExtendScript fallback path - Detect HTTP→HTTPS redirects in both fetch and XHR paths - Add HTML response detection in downloadFile, doFetch, and doXHR - Add diagnostic logging (URL, key prefix, content-type) to request flow - Add per-frame download/import logging in sync-engine - Show base URL and key prefix in sync error messages
- Add install.sh for macOS/Linux (auto-detects OS, enables PlayerDebugMode, symlinks to CEP extensions directory, copies CSInterface.js from AE) - Add install.ps1 for Windows (same steps via PowerShell, with --SkipBuild and --SkipDebugMode flags for advanced use) - Add uninstall.sh and uninstall.ps1 for clean removal - Add npm scripts: npm run install-plugin / npm run uninstall-plugin (auto-detect platform and run the correct script) - Remove old setup.sh (replaced by install.sh) - Update README with simplified one-command install instructions - Add .sisyphus/ to .gitignore
…prefsd restart - Remove Linux path since Adobe CC/CEP doesn't run on Linux - Add 'killall cfprefsd' after setting PlayerDebugMode on macOS to ensure preference change takes effect immediately
- Add scripts/install.ts: cross-platform installer in TypeScript (auto-detects macOS/Windows, enables PlayerDebugMode, finds CSInterface.js, installs to CEP extensions directory, verifies installation) - Add scripts/uninstall.ts: cross-platform uninstaller - Add scripts/build-bin.ts: builds standalone executables for darwin-arm64, darwin-x64, and windows-x64 via Bun compile - Add npm scripts: build-bin, install-bin, uninstall-bin - Add @types/bun devDependency for type support - Update README with standalone executable install option - Add dist-bin/ to .gitignore Users can now download a single executable (no Node.js required) to install the plugin, or build from source with shell/PowerShell scripts.
Builds plugin package and standalone executables on release:
- Plugin zip (mstudio-ae-plugin-{version}.zip)
- macOS ARM64 installer (install-darwin-arm64-{version}.tar.gz)
- macOS x64 installer (install-darwin-x64-{version}.tar.gz)
- Windows x64 installer (install-windows-x64-{version}.zip)
- Plus uninstallers for each platform
Triggered on release publish, uploads all assets to the GitHub release.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.