Repository navigation
raea 0.1.2
raea 0.1.2 lets compositions measure themselves the way a web page does, teaches raea what you judge good, and gives the app's player one timeline for picture and sound.
Get the app at raea.io (a Mac with Apple silicon, Windows 10 or 11, or Linux on x86_64).
The engine alone:
curl -fsSL https://raea.io/install | shOn Windows, in PowerShell: irm https://raea.io/install.ps1 | iex.
What changed since 0.1.1
Components that measure, as in Chrome (#54, #13). Many components written for the web measure before they draw: a title sized to its box, captions wrapped where a line really ends, a caret after the last typed letter. In a composition those reads now answer as Chrome does, from the same layout and font files that draw the frame: getBoundingClientRect (through transforms and perspective), offsetWidth and the rest, getComputedStyle, a ref's children and selectors, document.createElement, Range, document.fonts, ResizeObserver, a canvas's measureText, and svg text's lengths. Hold the frame with delayRender and continueRender until a measure lands. Reads answer in live play too (the app's stage, raea play, exported games). In a render the first read in a frame costs about 0.4 ms, and more in the same frame almost nothing. Measured against headless Chrome on snapcn's measuring components, 23 of 33 now land within a pixel (3 before). The manual's new guide, "Web components that measure", lists what answers and what doesn't yet.
Text set as Chrome sets it. Letters set a span each keep their kerning. A visibility: hidden word keeps its place and isn't drawn. A web font from loadFont is the one measured and drawn at every weight (raea's own Inter drew 500 as 400 and 600 as 700), and it's loaded before your first effect runs. A canvas's system-ui is the Mac's system font. An svg <text> with letter-spacing lands where Chrome puts it.
Canvas, requestAnimationFrame and Image (#55, #56). Compositions get the web's 2D canvas context, requestAnimationFrame (called once per frame drawn, with that frame's time) and new Image().
raea learns what you judge good. raea fingerprint keeps a fingerprint of your taste: axes such as blur, glow or a frozen picture, each a small model over encoders that run on your Mac (SigLIP 2 for pictures, CLAP and YAMNet for sound, EmbeddingGemma for scripts). Your notes, approvals and picks between two cuts teach it, and raea fingerprint score says where a piece stands on each axis and whether a fix fixed what it claimed (--was OLD). raea fingerprint things finds a shot's things, their depth and the ground under them, and raea check --things reports one floating, passing through another, or a camera that changes speed mid-move. Archiving a project runs a post-mortem. The app has a Fingerprint page: what it knows, what it's learning, and fingerprints of your own for different kinds of work.
One timeline in the player. A video's player in the app is one deck: the picture on top, the sound under it and your comments' pins between them. The picture track shows frames, energy, scenes, captions or checks, and the sound track a waveform, beats or words; what a render hasn't got yet is offered with its verb (Transcribe, Detect). An agent at work has a stop button wherever the app shows it working, a feed or the Inbox can be summed up on its timeline, and a new project waits for you to make the first move.
Review links by email. Under a live review link in the Share panel, type up to 25 addresses and an optional note, and raea mails them the link. Sign-in codes come by email too.
Video with alpha (#113). A VP9 WebM's transparency and a ProRes 4444's are drawn, not refused or made opaque, and render --alpha leaves a frame with 3D transparent where nothing is drawn (#114).
Projects with room to grow. A new project has compositions/, components/, controllers/, assets/ and artifacts/, and a workspace has shared/ for what every project imports as @shared/.... raea component add (raea part's new name, which still works) copies a ready component into the project, or into shared/ with --shared.
raea's Claude plugin installs from raea's marketplace and is the raea skill with its two hooks, which run raea locally and send nothing.
Fixes
- The Windows app stays open when a video opens: every raea executable on Windows now has an 8 MB main-thread stack, not the 1 MB default (#112).
- The Windows app no longer crashes at launch reading a blob: FileReader, fetch's request body and a WebSocket's binary send turn bytes into a string a slice at a time, and a frame's own script is found under the app's folder (#124).
- When an agent's Claude sign-in runs out mid-conversation, the app says so and signs you in again there, instead of failing every turn (#111).
- On a Retina display the page fills the window instead of a quarter of it (#120, with Treamz), and the window is sharp.
- A frame that comes out all black though its page shows something is a warning, said once over its run of frames (#96), and a filter of opacity() alone draws as the layer's opacity (#96).
- Dark gradients no longer band in 8-bit H.264: the colour conversion dithers (#87).
- canvas
arcTodraws the corner's short arc, as a browser does (#97). - A Cone takes clicks only across its height (#98).
- A mesh's emissive colour changes the frame it's set in live 3D (#106).
getBoundingClientRectno longer panics on a removed element and answers a zero rect underdisplay: none(#108).- A relayout keeps an inline box's baseline (#109).
raea check's safe-area rule tests a text's letters, not its box; a card that shares one word with a line isn't held to it as a caption; and a missing taste file is a note (#89, #102, with SirSicard).raea cuttakes a sound-only take (#89).- A still no longer prints dozens of CommandQueue warnings, and the 3D camera is the shadow origin (#89, #104, with SirSicard).
- A fresh
raea initrenders again. - R3F: an opacity outside 0 to 1 is clamped instead of throwing (#117), and three.js 0.180 or later is the peer range (#118), both with Ragulsundaram. The three.js host draws
<Instances>at each placement. - A ShaderMaterial under Solari lighting draws instead of failing its prepass.
- raea's own commits work on a machine whose git has no
user.name. import.meta.urlis set in every module on macOS 15.
Thank you to everyone who filed issues and sent PRs this round: augusbazan, SirSicard, Ragulsundaram, Treamz, revouwu, kevinschaich, connorads and Razepriv.
Its binaries are v0.1.2-rc5's, built from 1be8199 and checked there.
Known missing
- Of snapcn's measuring components, 10 still don't land within a pixel of Chrome (a font's tracking table, a few transforms' ink); docs/layout-reads.feature lists each. A Range across wrapped lines is one rect, and an element has no
innerHTML. raea fingerprintdoesn't judge how real a sound is yet: it was measured on CC0 and CC BY recordings and didn't clear the bar for every kind of sound.- The Windows and Linux apps don't update themselves yet: download the next version from raea.io.
- On Linux, raea needs ALSA, fontconfig and Vulkan (Ubuntu 24.04:
sudo apt install libasound2t64 libfontconfig1 libvulkan1 mesa-vulkan-drivers). - The OCR half of the reading check runs on the Mac only.
- The engine's own binaries aren't notarized. The Mac app is signed and notarized.