Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: Release

on:
release:
types: [published]

permissions:
contents: write

jobs:
build-and-release:
runs-on: macos-latest

steps:
- uses: actions/checkout@v4

- uses: oven-sh/setup-bun@v2

- uses: actions/setup-node@v4
with:
node-version: "20"

- name: Install dependencies
run: npm ci

- name: Build plugin
run: npm run build

- name: Copy CSInterface placeholder
run: |
if [ ! -f CSInterface.js ]; then
echo "CSInterface.js not found — creating placeholder"
echo "// CSInterface.js must be copied from your Adobe After Effects installation."
echo "// The installer will find and copy it automatically." > CSInterface.js
fi

- name: Build standalone executables
run: bun run build-bin

- name: Create plugin package
run: |
mkdir -p package/CSXS package/src package/dist package/assets/icons package/assets/styles
cp -r CSXS/* package/CSXS/
cp src/index.html package/src/
cp dist/index.js package/dist/
cp -r assets/icons/* package/assets/icons/
cp -r assets/styles/* package/assets/styles/
cp manifest.json package/
cp CSInterface.js package/
cp .debug package/
cp install.sh package/
cp install.ps1 package/
cp uninstall.sh package/
cp uninstall.ps1 package/
cp README.md package/

- name: Create archives
run: |
VERSION="${GITHUB_REF_NAME}"
cd package && zip -r "../mstudio-ae-plugin-${VERSION}.zip" . && cd ..

cd dist-bin
tar -czf "../install-darwin-arm64-${VERSION}.tar.gz" install-darwin-arm64
tar -czf "../install-darwin-x64-${VERSION}.tar.gz" install-darwin-x64
zip "../install-windows-x64-${VERSION}.zip" install-windows-x64.exe
tar -czf "../uninstall-darwin-arm64-${VERSION}.tar.gz" uninstall-darwin-arm64
tar -czf "../uninstall-darwin-x64-${VERSION}.tar.gz" uninstall-darwin-x64
zip "../uninstall-windows-x64-${VERSION}.zip" uninstall-windows-x64.exe

- name: Upload release assets
uses: softprops/action-gh-release@v2
with:
files: |
mstudio-ae-plugin-*.zip
install-darwin-arm64-*.tar.gz
install-darwin-x64-*.tar.gz
install-windows-x64-*.zip
uninstall-darwin-arm64-*.tar.gz
uninstall-darwin-x64-*.tar.gz
uninstall-windows-x64-*.zip
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ node_modules/

# Build output
dist/
dist-bin/

# IDE
.idea/
Expand All @@ -25,3 +26,12 @@ npm-debug.log*
# Environment
.env
.env.local

# CEP — Adobe libraries copied from AE installation
CSInterface.js
.debug

# Hello plugin build output
simple-hello-plugin/dist/
simple-hello-plugin/node_modules/
.sisyphus/
61 changes: 61 additions & 0 deletions CSXS/manifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<ExtensionManifest Version="12.0"
ExtensionBundleId="com.modelslab.mstudio.ae.sync"
ExtensionBundleVersion="1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ExtensionList>
<Extension Id="com.modelslab.mstudio.ae.sync.panel" Version="1.0.0" />
</ExtensionList>
<ExecutionEnvironment>
<HostList>
<Host Name="AEFT" Version="[13.0,99.9]" />
</HostList>
<LocaleList>
<Locale Code="All" />
</LocaleList>
<RequiredRuntimeList>
<RequiredRuntime Name="CSXS" Version="12.0" />
</RequiredRuntimeList>
</ExecutionEnvironment>
<DispatchInfoList>
<Extension Id="com.modelslab.mstudio.ae.sync.panel">
<DispatchInfo>
<Resources>
<MainPath>./index.html</MainPath>
</Resources>
<Lifecycle>
<AutoVisible>true</AutoVisible>
</Lifecycle>
<UI>
<Type>Panel</Type>
<Menu>MStudio Sync</Menu>
<Geometry>
<Size>
<Height>500</Height>
<Width>320</Width>
</Size>
<MinSize>
<Height>400</Height>
<Width>280</Width>
</MinSize>
<MaxSize>
<Height>1200</Height>
<Width>600</Width>
</MaxSize>
</Geometry>
<Icons>
<Icon Type="Normal">./assets/icons/icon-23.png</Icon>
<Icon Type="RollOver">./assets/icons/icon-23.png</Icon>
<Icon Type="Disabled">./assets/icons/icon-23.png</Icon>
<Icon Type="DarkNormal">./assets/icons/icon-23.png</Icon>
<Icon Type="DarkRollOver">./assets/icons/icon-23.png</Icon>
</Icons>
</UI>
</DispatchInfo>
</Extension>
</DispatchInfoList>
<CEFCommandLine>
<Parameter>--allow-running-insecure-content</Parameter>
<Parameter>--disable-web-security</Parameter>
</CEFCommandLine>
</ExtensionManifest>
117 changes: 88 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,46 +5,100 @@ Bidirectional sync between [MStudio](https://app.mstudio.ai) and Adobe After Eff
## Requirements

- Adobe After Effects 2024 or later (v24.0+)
- [UXP Developer Tool](https://developer.adobe.com/photoshop/uxp/2022/guides/devtool/installation/) (for development/sideloading)
- Node.js 18+ (for building)
- Node.js 18+ (for building from source)
- An MStudio account with an API key that has `sync` scope

## Installation

### From Built Plugin (Production)
### Option 1: Standalone Executable (Easiest)

1. Download the latest release from the releases page
2. Open After Effects
3. Go to **Edit > Preferences > Scripting & Expressions**
4. Enable **Allow Scripts to Write Files and Access Network**
5. Open the UXP Developer Tool
6. Click **Add Plugin** and select the `manifest.json` from the extracted release folder
7. Click **Load** to activate the plugin
8. The **MStudio Sync** panel will appear under **Window > Extensions**
Download the installer for your platform from the [latest release](https://github.com/ModelsLab/mstudio-AE-plugin/releases), then:

### From Source (Development)
**macOS:**
```bash
chmod +x install-darwin-arm64 # or install-darwin-x64 for Intel Macs
./install-darwin-arm64
```

**Windows:**
```
.\install-windows-x64.exe
```

No Node.js, npm, or build tools required. The executable handles everything.

### Option 2: From Source

**macOS / Linux:**
```bash
# Clone the repository
git clone https://github.com/ModelsLab/mstudio-AE-plugin.git
cd mstudio-AE-plugin
./install.sh
```

# Install dependencies
npm install
**Windows (PowerShell as Administrator):**
```powershell
git clone https://github.com/ModelsLab/mstudio-AE-plugin.git
cd mstudio-AE-plugin
.\install.ps1
```

# Build the plugin
npm run build
**Or using npm (any platform):**
```bash
git clone https://github.com/ModelsLab/mstudio-AE-plugin.git
cd mstudio-AE-plugin
npm run install-plugin
```

# Or watch for changes during development
npm run dev
The install script will:

1. Build the plugin from source
2. Enable CEP debug mode (allows unsigned extensions)
3. Copy CSInterface.js from your AE installation
4. Symlink the plugin into Adobe's CEP extensions directory
5. Verify the installation

Then restart After Effects and open **Window → Extensions → MStudio Sync**.

### Build Standalone Executables

To compile installers for all platforms (requires [Bun](https://bun.sh)):

```bash
bun run build-bin
```

Then sideload via UXP Developer Tool:
This creates executables in `dist-bin/` for macOS (ARM64, x64) and Windows (x64).

### Uninstall

**Standalone executable:** Run the `uninstall` binary for your platform.

1. Open the UXP Developer Tool
2. Click **Add Plugin**
3. Navigate to this repo's root directory and select `manifest.json`
4. Click **Load** to activate
**From source:**
- macOS/Linux: `./uninstall.sh`
- Windows: `.\uninstall.ps1`
- npm: `npm run uninstall-plugin`

### Prerequisites

Before installing, enable script access in After Effects:

1. Open **Edit → Preferences → Scripting & Expressions** (Windows) or **After Effects → Settings → Scripting & Expressions** (macOS)
2. Enable **Allow Scripts to Write Files and Access Network**

### From Source (Development)

```bash
npm install
npm run build
npm run install-plugin
```

For live development with auto-rebuild:

```bash
npm run dev
```

## Setup

Expand Down Expand Up @@ -145,7 +199,7 @@ All under `/api/v1/projects/{uuid}/sync/`:

## Troubleshooting

**Plugin won't load**: Ensure AE is version 24.0+. Check UXP Developer Tool console for errors.
**Plugin won't load**: Ensure AE is version 24.0+ and CEP PlayerDebugMode is enabled (the install script does this automatically). Check the AE console for errors (Help → Enable Console).

**Connection failed**: Verify your API key has the `sync` scope. Check that your subscription is active.

Expand All @@ -158,12 +212,17 @@ All under `/api/v1/projects/{uuid}/sync/`:
## Development

```bash
npm run dev # Watch mode — rebuilds on file changes
npm run build # One-time production build
npm run clean # Remove dist/ directory
npm run dev # Watch mode — rebuilds on file changes
npm run build # One-time production build
npm run install-plugin # Rebuild + reinstall into CEP extensions
npm run uninstall-plugin # Remove plugin from CEP extensions
npm run clean # Remove dist/ directory
bun run build-bin # Build standalone installers for macOS/Windows
bun run install-bin # Run installer via Bun (development)
bun run uninstall-bin # Run uninstaller via Bun (development)
```

Reload the plugin in UXP Developer Tool after rebuilding to pick up changes.
After code changes, run `npm run install-plugin` and restart AE to pick up changes.

## License

Expand Down
Binary file added assets/icons/icon-23.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/icons/icon-48.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading