Skip to Content
ReferenceKnown gaps

Known gaps

Premation is version 1.0.1. This page is the list of things that are not done, kept here rather than described as intentions elsewhere in the documentation.

If a page in these docs describes something that does not work, and it is not on this list, treat it as a documentation bug.

Not implemented

AreaStatus
Real-time collaboration — live cursors, multi-user editingNot implemented, and not planned
Review comments, approval flow, shareable review linksRemoved outright — not gated, not hidden behind a plan
Ray-traced or Cinema 4D-class 3DNot implemented. The 3D model is Classic 3D, with a PBR shading mode, image skies, fog, layer reflections and imported models (glTF, OBJ, FBX, USD) added — newer and less proven than After Effects’ equivalents
A dedicated video editor’s workflowClip tools exist — razor, slip, slide, roll, ripple delete, a source monitor, multicam, transcript editing; see Cutting clips — but on a layer-per-row compositing timeline. Long-form editing is not what this is for
Stretch as a slot fit policyDeliberately absent. It exists only to distort, which Native + scale already gives — see Media slots

Gated or partial

AreaStatus
Motion AI in the local editionThe first-party metered provider needs the server, so it is a server-edition option only. The assistant itself runs in both editions on your own key, held in the operating system’s keystore in the local edition
The plugin store in the local editionThe store needs the hosted backend, so the local edition built from source has none. Native plugins install there from a .pplugin file or by copying a bundle into the plugins folder — see Plugins
JavaScript/WGSL pluginsRemoved in 0.9.0 and not coming back; the store lists native plugins only. A project that used the old system opens with that content kept and passed through, and one notice names the missing plugins — see Plugins
Plugins in server rendersPlugins run on your computer only, so a project that uses plugin effects is refused before it is sent to the hosted renderer, naming the plugins; export it locally
Generating captions and transcripts in the installersTranscription runs on your own OpenAI key, and the server edition — which the installers are — has no hosted transcription route yet, so Generate Captions from Audio and Transcribe Composition report that instead of running. They work in the local edition built from source. Importing, editing and exporting captions work everywhere. See Captions
SimulationThe Cloner and Physics modifiers ship (Effects & Presets ▸ Simulation, beside the Caustics, Shatter and Wave World effects; Animation ▸ Bake ▸ Bake Physics to Keyframes…). They are newer and less proven than the rest of the app
Media columns when filling a template from a data tableText, colour and number columns apply; a media column is reported as skipped rather than silently ignored. A column of file paths pulls asset ingestion into the batch path, which can fail per row
Motion AI — the first-party metered providerDisabled while in development, in the server edition too. Bring-your-own-key works there
Proxy generation without ffmpegGenerating a proxy uses the ffmpeg every installer ships. A development build from source with no ffmpeg cannot generate one; attaching an existing proxy works without it
Continuous RasterizationShips, but opt-in per layer and offered only where it can help: text, SVG and shapes with real geometry. Bitmaps and flat rects are excluded
Above-4× raster cache with CR offKnown and filed, not fixed globally. With CR off, every scale past 4× shares one cache key, so the first raster wins and zooming further never re-rasterises. Opting the layer in is the supported fix
ffprobe on importBest-effort. The installers ship ffmpeg but not ffprobe, so the probe runs only where one is found. An unprobed file still imports; the fields the probe would have filled in are unknown until it can run
Local-first chunked .motion bundle + its six-table indexDesigned in the architecture RFC, not yet fully implemented
The Graph Editor’s rendered layoutThe full-panel layout is not covered by unit tests and was not verified by eye against a scene with keyframes

Recently closed

Listed because earlier versions of these docs described them as gaps:

Was a gapNow
“Tracking — not implemented”One-click point tracking shipped in 0.4 — click a feature, get keyframes both directions, with rotation & scale from a companion point. A corner (planar) tracker, a 3D camera solver and a Roto Brush now exist as well, but are newer and less proven than After Effects’ (and mocha’s)
Rendering on the editor’s main threadClosed in 0.9. Frames are drawn by a separate native engine process; a crash there restarts the engine, not the editor
Opening an After Effects projectShipped in 0.8.5. .aep and .aepx open directly, with an import report — see Opening After Effects projects
Effect breadth “58 of AE’s 400+”275, across twelve browser folders, drawn by the native engine on the GPU — sixty more After Effects effects arrived in 1.0
“Plugin installer and registry — absent in 0.9”Shipped in 1.0. A plugin store for native plugins (Dashboard ▸ Plugins), signed .pplugin files that install with a double-click, and bundles that load on Rescan without a restart. Plugins can now add commands, panels, importers, export formats, presets and on-canvas handles — see Plugins
“MP4 export depends on ffmpeg being present”Closed in 1.0.1. Every installer ships ffmpeg, checks it at startup and before each export, and repairs it in one click — see ffmpeg & codecs
A layer larger than the GPU’s texture limit blanked the whole frameFixed in 1.0. The engine asks the GPU for its full texture size (up to 16,384 px), and a layer still beyond it is reported on that layer’s error list while the rest of the frame draws
A busy renderer got the engine restarted as “hung”Fixed in 1.0. A heavy frame no longer counts as a hang, and edits in flight when the engine does restart survive it
Render Queue could not resume an interrupted jobResume is there — a job picks up at the frame it stopped on
Blend modes “17 of 38”All 38. Dissolve and Dancing Dissolve landed with the AE-parity wave
Layer styles “nine, no Glass”10. Glass is real; it lives in a second registry because it resolves against what is composited behind the layer
Per-vertex rig weights, IK/FK switching, auto-rig presetsAll shipped — the named gaps against DUIK and Rive are closed
Filling a template from a spreadsheetShipped. Point a CSV at the fields and apply a row; one row is one undo entry
Template image-swap fieldsShipped as media slots with a fit policy — video, stills, sequences and whole compositions
Continuous Rasterization “not implemented”Implemented, opt-in per layer
Frame blending collapsing to nearest-frame on a mismatched source rateFixed — ffprobe supplies the real source rate, and blending brackets on it
Outer Glow and Drop Shadow rendering in the layer’s colourFixed. They were tinting (a multiply), so only a black shadow was ever right — by accident
Cameras and lights ignoring their parentFixed. One resolved transform behind both, and parenting is bounded by the composition
A camera or light that could not be grabbed in the viewportFixed. The position handle and the Point of Interest crosshair drag independently
Comp instances borrowing the host’s camera and frame sizeFixed. A sealed instance renders through its own recursive snapshot pass, at its own size
The Media panel’s Fit Mode dropdown doing nothingRemoved. Fit is a command, not a stored property
package.json declaring UNLICENSEDLicensed GNU AGPL v3.0 only

Platform availability

Installers are published on GitHub Releases .

PlatformRelease assetInstaller
Windows 10 / 11 x64Premation-Setup-Windows.exeAvailable
macOSPremation-macOS-arm64.dmg / Premation-macOS-x64.dmgAvailable. The first 1.0 macOS build is 1.0.1 — the 1.0.0 macOS engine did not build
Linux x64Premation-Linux-x86_64.AppImageAvailable since 1.0.2

The Linux AppImage is new. CI checks that the engine and ffmpeg inside it run, but nobody on the team uses Linux day to day, so expect rough edges and please report them. It needs FUSE 2 (libfuse2) and a Vulkan-capable GPU driver; on Wayland it runs through XWayland.

Format and stability

  • The project file format is still moving. Keep File → Export → Project copies of work you cannot afford to lose.
  • The installers are unsigned, so macOS updates are manual — see Updates & macOS setup.
  • The editor is licensed GNU AGPL v3.0 only. The AGPL covers the editor repository; it does not cover the separate hosted backend service, which is not distributed there. Section 13 matters in particular — run a modified version as a network service and you must offer its users the corresponding source.

Known behavioural quirks

QuirkDetail
Which layers can be 3DShapes, solids, text, images, video, SVG, nulls and sealed composition layers. Groups, adjustment layers and a composition layer with Collapse Transformations on do not take the 3D switch
Expressions run in the engine’s interpreterExpressions are evaluated by the engine’s own interpreter, not by a JavaScript runtime
Card thumbnails are approximateLibrary and template cards preview geometry and timing, not necessarily every filter
Audio Waveform and Audio Spectrum are different effectsNot a gap any more. audio-waveform draws the envelope; audio-spectrum runs a real FFT over an adjustable analysis window and draws frequency bands between a start and end frequency you set
Lottie export is vector + transforms onlyEffects, 3D lighting and video do not survive
A proxy in use looks like a quality bugWhich is why the state is stated loudly on the asset rather than left to be inferred. Substitution is pixels only, and never reaches output
An ortho view shows two comp framesDeliberate. The filled rect is the frame that will be exported; the dashed quad is where the comp’s z = 0 plane sits, seen edge-on. Both are true

Testing notes

If you are working on the codebase rather than using the app:

  • Thousands of automated tests cover the interface and the native engine, plus a golden-frame gate with committed reference frames.
  • The interface is typechecked under TypeScript strict with noUncheckedIndexedAccess.
  • The native engine has its own test suites (C++, with address, undefined-behaviour and thread sanitisers) and a golden-frame gate against the reference renders. Changes to shaders or render passes are expected to pass the golden gate before they merge.
  • Alpha is premultiplied everywhere past the decode. A file’s alpha mode is consumed once, at decode — see How a frame is rendered.
  • Blessing a reference frame is deliberate. Check git status on the references directory before committing — an unreviewed reference change hides a regression.
  • OneDrive gotcha: running Jest directly inside a OneDrive working copy can silently run only a fraction of the suites, because placeholder files hide the rest from the resolver. Mirror the repository to local disk for a real full run, and do not treat a zero-hit grep inside OneDrive as proof of absence.
Last updated on