Skip to content

refactor: migrate from UXP to CEP for After Effects 2026 compatibility#1

Merged
Abdullahi-Model merged 7 commits into
mainfrom
cep-conversion
May 18, 2026
Merged

refactor: migrate from UXP to CEP for After Effects 2026 compatibility#1
Abdullahi-Model merged 7 commits into
mainfrom
cep-conversion

Conversation

@Abdullahi-Model
Copy link
Copy Markdown
Collaborator

  • 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)

Jimlah added 7 commits May 14, 2026 19:20
- 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.
@Abdullahi-Model Abdullahi-Model merged commit 5b2a950 into main May 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants