Skip to Content
ReferenceKnown gaps

Known gaps

Premation is version 0.7.0. 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
Imported 3D models, PBR materials, HDRI environmentsOut of scope. The 3D model is Classic 3D
Multi-track NLE / clip-based video editingOut of scope. This is not a video editor
Stretch as a slot fit policyDeliberately absent. It exists only to distort, which Native + scale already gives — see Media slots

Gated or partial

AreaStatus
The AI assistant in the local editionAbsent, and not for a technical reason. The bring-your-own-key path works — it needs a key, not a backend — so this is a distribution decision, and re-enabling it is one predicate. The surfaces are gated individually and the IPC channels are not registered at all, rather than the panel being hidden over a live one
Plugins in the local editionAbsent. The registry, review queue and signed revocation list are what make running third-party code defensible, and a build without them does not offer the sandbox either. A project containing plugin content still opens, edits and saves losslessly
SimulationThe subsystem core exists — a cache whose state at a frame does not depend on which frames were asked for first — but there is no layer type, no registry entry and no renderer path. Nothing user-facing yet
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 in browser buildsAbsent — it needs ffmpeg. Attaching an existing proxy works everywhere
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 importDesktop only, and best-effort. Three tiers — probed / element-only / none. An unprobed file still imports; it just falls back to what the <video> element can tell us
Local-first chunked .motion bundle + its six-table indexDesigned in the architecture RFC, not yet fully implemented. The engines are frozen pending it
ffmpeg bundling for fully offline MP4Open decision. MP4 export currently depends on ffmpeg being present
GPU per-frame render off the main threadStill on the main thread. The offload boundary is identified
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. Still no camera solver, planar tracker or rotoscoping — those remain real gaps
“No plugin format for effects — the plugin system extends the app, not the render graph”Wrong since API 4. A plugin declares typed parameters and a shader body, and the host writes the pipeline and the draw call. Needs the WebGPU tier
Third-party layer typesShipped. A plugin can contribute a layer type owning a generated subtree, with a scene:proxy grant that reaches only its own children
Effect breadth “58 of AE’s 400+”183, across ten browser folders — and since 0.7, 177 of them run as GPU shaders. Six still bake on the CPU (Vegas, Numbers, Timecode, Audio Spectrum, Audio Waveform, Lightning); the viewport HUD lists them under cpu fx
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
LinuxNot currently supported

The Linux target was removed from the build and the release matrix deliberately, so no installer is produced. Building from source still works there.

Format and stability

  • The project file format is still moving. Keep File → Export → Project copies of work you cannot afford to lose.
  • The installer is unsigned during the beta.
  • 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
Solid layers and 3DA layer can go 3D if it has a transform component; solids were historically pinned by the renderer
Expressions under the dev CSPDevelopment builds block new Function, which historically made one AI tool inert in dev. The shipped path evaluates through the engine’s own interpreter
Canvas2D previews skip GPU-only effectsLibrary and template cards preview geometry and timing accurately, not every filter
Audio Waveform and Audio Spectrum are different effectsNot a gap any more. audio-waveform draws the envelope; audio-spectrum runs a real radix-2 FFT over a 1024-sample 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:

  • Roughly 5,400 automated tests across ~470 suites, plus a pixel-comparison render-test harness with committed reference frames.
  • Typechecked under TypeScript strict with noUncheckedIndexedAccess.
  • Reading pixels back from a GPU canvas must happen in the same task as the draw call. After an await, a composited canvas hands back nothing.
  • A render harness launched with --use-angle=swiftshader never runs WebGPU. It suppresses Dawn, and every “WebGPU” number it produces is really WebGL2 fallback pixels. Check the backend the harness resolved, not the one it was asked for.
  • Alpha is premultiplied everywhere past the decode. A file’s alpha mode is consumed once, at decode — see How a frame is rendered.
  • The renderer’s Null backend records draw calls, not pixels. It proves structure — this many quads, in this order — and cannot prove a shader is correct. That is what the render tests are for.
  • 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