Releases: NomaDamas/CozyClay
Release list
CozyClay 1.6.0
Changelog
1.6.0
The official npm package now records anonymous product usage so downloads can
be distinguished from real launches and returning use.
npx cozyclay,bunx cozyclay, and globalcclaylaunches get a
signed-package-verified anonymous installation ID.- The existing scene, edit, motion, export, and activation funnel is available
for npm sessions withdistribution: npmandapp_versionproperties. - Source checkouts, forks, CI, tests, malformed or unsigned packages, and
opted-out launches remain untracked. cclay telemetry status|on|offcontrols the package-wide setting; the
in-app toggle stays synchronized with it.- URL/referrer/campaign-derived values are scrubbed before any event leaves the
browser, and corrupted telemetry state fails closed.
1.5.0
The release where the camera can climb a shaped path, recordings leave the studio as
standard MP4 files, and generated falls finally reach the ground.
Shape a crane move
Rail Follow now carries a persisted crane-height profile with two to eight points instead
of only a start and end height. The camera evaluates the profile with a monotone cubic
curve, so it passes through every authored height without overshooting. Purple handles in
the scene and matching markers in each Shot card stay synchronized: drag vertically to set
height, Shift-drag along the rail, double-click to add a point, and delete an interior point.
One undo reverses one complete gesture, and older {start,end} projects migrate to pinned
endpoints automatically.
Record a real MP4
Record now downloads a fast-start H.264 MP4 at 24 fps instead of WebM. The exporter tries
High, Main, then Baseline AVC profiles, keeps frame-addressed deterministic rendering, and
fails by name when the browser has no compatible H.264 WebCodecs encoder rather than
producing a misleading MP4 that desktop editors cannot open. Mediabunny performs the
in-browser muxing and is documented in the third-party notices.
Falls that read in previs
When generated motion walks off its support, CozyClay can stage a ballistic root drop with
horizontal drift, a readable fall clock, and an impact hold instead of leaving the character
suspended at the roof edge. Motion completion now means the editor acknowledged and
installed the take: explicit rejection fails visibly, reconnects do not duplicate the
installation, and an uncertain lost acknowledgement is never retried as though nothing
happened.
ARDY bridge fixes
- Local runner options now reach the bridge instead of disappearing between processes.
- Camera-clause cleanup no longer mistakes ordinary object nouns for camera instructions.
- The prompt guide distinguishes measured upstream behavior from local authoring heuristics.
- Demo and operations documentation now use supported options and cite the four-second
waypoint-history evidence honestly.
1.4.1
Gizmo drags survive past their first tick again. The split-camera work in 1.4.0 wrapped the
gizmo's change callback in a shot-camera dispatcher that dropped the drag-transaction token,
so every arrow, plane, knob, and ring drag was closed by its own first move — objects moved
one snap step and stopped. The token now round-trips, and the gizmo suite drives the ring
with a real arc and the plan puck in the Top-View inset, matching how the studio actually
works today.
1.4.0
The release where every edit can be taken back.
Undo, everywhere
One Ctrl+Z history now covers the whole editor, not just character moves. Newly undoable:
- Prompt blocks — add, remove, drag, edge-resize, and text edits (one entry per editing
session, not per keystroke). - Root waypoints — floor-click placement, timeline removal, and Top-View drags.
- Camera authoring — camera keys (add / re-time / remove / clear), camera-block settings,
rail schedule moves and resizes, rail removal, and viewport or plan framing commits. - Shots — delete, add, split, duplicate, reorder, boundary resize, and rename.
- The Full-Body take — segment cuts, retimes, deletions, trims, and clearing the take
(the cleared clip, IK keys, and stature all come back). - Poses and the cast — pose apply / reset / save, model swap, tint, subject text, and
inspector position scrubs. - IK keys — add, remove, and drag-bake; undo snapshots now carry the key map itself.
Every continuous drag records exactly once at gesture start, so a long drag is one Ctrl+Z,
never a hundred.
Cut the take like film
The Full-Body strip is now a cutting room: cut at the playhead, then grab a segment's amber
right-edge grip and stretch it — the width IS the playback rate (wider is slower, 0.1×–4× on
the same grid as the numeric editor). Right-click a segment to delete it outright. All of it
is non-destructive: the source frames stay whole, and a right-click on a trim handle still
restores the full take.
Two cameras, one stage
The editing view and the recording camera are no longer the same eye. The main pane belongs
to a free editor camera — fly it, inspect the set, scrub playback — while the shot camera
records through a chrome-free 16:9 preview and stands in the scene as a selectable ghost you
block like any other body. Look-through hands you the old framing-by-flying when you want it,
and leaves your view alone when you don't.
A hardened MCP
The server now enforces loopback-only hosting, rejects forged HTTP origins, refuses project
files with hard links, isolates live scene documents and generation artifacts per session,
and preserves motion-job ownership across reconnects. HTTP session children inherit the
parent's configuration (a configured bridge URL no longer silently vanishes), and a session
that cannot own the live editor port now says exactly why instead of pretending no editor
exists.
Everything else
- Selection — clicking empty floor or sky reliably clears the selection; the selection
cage's generous line hitbox no longer swallows the press. - Timeline — the camera block's preview button plays its shot instead of throwing.
- CI — pull requests are gated on the node and browser suites.
- CozyClay now ships as an
AGPL-3.0-or-latercombined work. Modified versions offered over
a network must offer their users the corresponding source, and the Studio footer carries
that source offer.
1.3.0
The release where the studio stops being something only a person can drive.
Direct it with an AI
CozyClay now ships an MCP server. Point Claude, Cursor, or any
MCP client at it and ask for a shot in plain language — it places the cast, frames "a low wide
profile", generates multi-phase motion, and the viewport moves while you watch.
{ "mcpServers": { "cozyclay": { "command": "npx", "args": ["-y", "cozyclay", "mcp"] } } }It computes nothing of its own. Every answer comes from the modules the studio already renders
with — shot.js for film vocabulary, scenes.js for the stage, camera-move.js for moves — so
the server and the UI cannot disagree about what a 35 mm medium shot is.
- Live or headless. With a studio tab open, tool calls drive the real viewport over a local
socket. With no tab, scene/project tools still block scenes, derive framing, render prompts,
and write.cclayprojectfiles; capture, prompt-block installation, motion generation and
atomic live batches remain editor-only. - Motion from plain beats.
generate_motionpreserves composite physical wording while
stripping camera, scenery and internal-state language ARDY cannot animate, splits only beats
that exceed ARDY's duration bound, and lands each phase as a Prompt Block on the timeline. - 24 tools, all documented in
mcp/README.md.
Cut a photograph out and stand it up
Drop an image on Props — or straight onto the shot — and it becomes a card you can place, turn and
block against. The background editor lives in the card's own inspector: paint or erase the
selection, zoom and pan with the wheel, and the picture sits on a stage rather than being framed
by one. Assets are stored once by content hash, so the same picture imported twice costs one copy.
An open stage
The two-walled room corner is gone. The set is a 500 m open deck — far enough that no ordinary
blocking meets its edge — with a two-tier grid (quiet 1 m cells, assertive 10 m lines) and a
distance falloff that dissolves the floor into the background instead of ending at a horizon.
Movement clamps moved from ±11 m to ±240 m, so a run or a chase finally has room.
Group props and move them as one
Scene objects now carry a parent. Build a rocket from ten primitives, group them, and the whole
thing drags as one body — through the gizmo, the inspector and the MCP tools alike. Deleting a
parent promotes its children rather than taking them with it.
Everything else
- Gizmo — the cast rides the same gizmo as scene objects, with rotate and scale; an XZ pad for
free ground drags; pick targets balanced so the pad no longer swallows every press. - Mocap — a video capture panel, takes assigned to cast members, and take trimming.
- Timeline — authoring runs on a 24 fps production clock while ARDY is still spoken to at
20 fps, and exports record at true motion speed. - Multi-character — an unbounded cast with per-character motion layers.
Fixes
- Props reported
1x1x1regardless of how they were built: scale never crossed the live protocol,
and the server reset whatever did arrive. Sizes are now real, and per-axis scale is exposed. - A 6 m ceiling survived the walls it belonged to, silently decapitating anything tall.
- Generating four Prompt Blocks produced one. IK keys from a discarded take made a fresh run look
like a local edit, and that path ships no schedule. Replacing a take now clears the corrections
authored against it. - A stale service worker served yesterday's bundle to the dev server...
CozyClay 1.5.0
The release where the camera can climb a shaped path, recordings leave the studio as
standard MP4 files, and generated falls finally reach the ground.
Shape a crane move
Rail Follow now carries a persisted crane-height profile with two to eight points instead
of only a start and end height. The camera evaluates the profile with a monotone cubic
curve, so it passes through every authored height without overshooting. Purple handles in
the scene and matching markers in each Shot card stay synchronized: drag vertically to set
height, Shift-drag along the rail, double-click to add a point, and delete an interior point.
One undo reverses one complete gesture, and older {start,end} projects migrate to pinned
endpoints automatically.
Record a real MP4
Record now downloads a fast-start H.264 MP4 at 24 fps instead of WebM. The exporter tries
High, Main, then Baseline AVC profiles, keeps frame-addressed deterministic rendering, and
fails by name when the browser has no compatible H.264 WebCodecs encoder rather than
producing a misleading MP4 that desktop editors cannot open. Mediabunny performs the
in-browser muxing and is documented in the third-party notices.
Falls that read in previs
When generated motion walks off its support, CozyClay can stage a ballistic root drop with
horizontal drift, a readable fall clock, and an impact hold instead of leaving the character
suspended at the roof edge. Motion completion now means the editor acknowledged and
installed the take: explicit rejection fails visibly, reconnects do not duplicate the
installation, and an uncertain lost acknowledgement is never retried as though nothing
happened.
ARDY bridge fixes
- Local runner options now reach the bridge instead of disappearing between processes.
- Camera-clause cleanup no longer mistakes ordinary object nouns for camera instructions.
- The prompt guide distinguishes measured upstream behavior from local authoring heuristics.
- Demo and operations documentation now use supported options and cite the four-second
waypoint-history evidence honestly.
CozyClay 1.4.1
Gizmo drags survive past their first tick again. The split-camera work in 1.4.0 wrapped the
gizmo's change callback in a shot-camera dispatcher that dropped the drag-transaction token,
so every arrow, plane, knob, and ring drag was closed by its own first move — objects moved
one snap step and stopped. The token now round-trips, and the gizmo suite drives the ring
with a real arc and the plan puck in the Top-View inset, matching how the studio actually
works today.
CozyClay 1.4.0
The release where every edit can be taken back.
Undo, everywhere
One Ctrl+Z history now covers the whole editor, not just character moves. Newly undoable:
- Prompt blocks — add, remove, drag, edge-resize, and text edits (one entry per editing
session, not per keystroke). - Root waypoints — floor-click placement, timeline removal, and Top-View drags.
- Camera authoring — camera keys (add / re-time / remove / clear), camera-block settings,
rail schedule moves and resizes, rail removal, and viewport or plan framing commits. - Shots — delete, add, split, duplicate, reorder, boundary resize, and rename.
- The Full-Body take — segment cuts, retimes, deletions, trims, and clearing the take
(the cleared clip, IK keys, and stature all come back). - Poses and the cast — pose apply / reset / save, model swap, tint, subject text, and
inspector position scrubs. - IK keys — add, remove, and drag-bake; undo snapshots now carry the key map itself.
Every continuous drag records exactly once at gesture start, so a long drag is one Ctrl+Z,
never a hundred.
Cut the take like film
The Full-Body strip is now a cutting room: cut at the playhead, then grab a segment's amber
right-edge grip and stretch it — the width IS the playback rate (wider is slower, 0.1×–4× on
the same grid as the numeric editor). Right-click a segment to delete it outright. All of it
is non-destructive: the source frames stay whole, and a right-click on a trim handle still
restores the full take.
Two cameras, one stage
The editing view and the recording camera are no longer the same eye. The main pane belongs
to a free editor camera — fly it, inspect the set, scrub playback — while the shot camera
records through a chrome-free 16:9 preview and stands in the scene as a selectable ghost you
block like any other body. Look-through hands you the old framing-by-flying when you want it,
and leaves your view alone when you don't.
A hardened MCP
The server now enforces loopback-only hosting, rejects forged HTTP origins, refuses project
files with hard links, isolates live scene documents and generation artifacts per session,
and preserves motion-job ownership across reconnects. HTTP session children inherit the
parent's configuration (a configured bridge URL no longer silently vanishes), and a session
that cannot own the live editor port now says exactly why instead of pretending no editor
exists.
Everything else
- Selection — clicking empty floor or sky reliably clears the selection; the selection
cage's generous line hitbox no longer swallows the press. - Timeline — the camera block's preview button plays its shot instead of throwing.
- CI — pull requests are gated on the node and browser suites.
- CozyClay now ships as an
AGPL-3.0-or-latercombined work. Modified versions offered over
a network must offer their users the corresponding source, and the Studio footer carries
that source offer.
CozyClay 1.3.0
The release where the studio stops being something only a person can drive.
Direct it with an AI
CozyClay now ships an MCP server. Point Claude, Cursor, or any
MCP client at it and ask for a shot in plain language — it places the cast, frames "a low wide
profile", generates multi-phase motion, and the viewport moves while you watch.
{ "mcpServers": { "cozyclay": { "command": "npx", "args": ["-y", "cozyclay", "mcp"] } } }It computes nothing of its own. Every answer comes from the modules the studio already renders
with — shot.js for film vocabulary, scenes.js for the stage, camera-move.js for moves — so
the server and the UI cannot disagree about what a 35 mm medium shot is.
- Live or headless. With a studio tab open, tool calls drive the real viewport over a local
socket. With no tab, the same tools run headless: block scenes, derive framing, render prompts,
and write.cclayprojectfiles the studio opens. - Motion from plain beats.
generate_motiontakes ordinary sentences, rewrites them into the
shape ARDY was trained to read, splits compound beats, drops language a body cannot perform, and
lands each phase as a Prompt Block on the timeline. - 21 tools, all documented in
mcp/README.md.
Cut a photograph out and stand it up
Drop an image on Props — or straight onto the shot — and it becomes a card you can place, turn and
block against. The background editor lives in the card's own inspector: paint or erase the
selection, zoom and pan with the wheel, and the picture sits on a stage rather than being framed
by one. Assets are stored once by content hash, so the same picture imported twice costs one copy.
An open stage
The two-walled room corner is gone. The set is a 500 m open deck — far enough that no ordinary
blocking meets its edge — with a two-tier grid (quiet 1 m cells, assertive 10 m lines) and a
distance falloff that dissolves the floor into the background instead of ending at a horizon.
Movement clamps moved from ±11 m to ±240 m, so a run or a chase finally has room.
Group props and move them as one
Scene objects now carry a parent. Build a rocket from ten primitives, group them, and the whole
thing drags as one body — through the gizmo, the inspector and the MCP tools alike. Deleting a
parent promotes its children rather than taking them with it.
Everything else
- Gizmo — the cast rides the same gizmo as scene objects, with rotate and scale; an XZ pad for
free ground drags; pick targets balanced so the pad no longer swallows every press. - Mocap — a video capture panel, takes assigned to cast members, and take trimming.
- Timeline — authoring runs on a 24 fps production clock while ARDY is still spoken to at
20 fps, and exports record at true motion speed. - Multi-character — an unbounded cast with per-character motion layers.
Fixes
- Props reported
1x1x1regardless of how they were built: scale never crossed the live protocol,
and the server reset whatever did arrive. Sizes are now real, and per-axis scale is exposed. - A 6 m ceiling survived the walls it belonged to, silently decapitating anything tall.
- Generating four Prompt Blocks produced one. IK keys from a discarded take made a fresh run look
like a local edit, and that path ships no schedule. Replacing a take now clears the corrections
authored against it. - A stale service worker served yesterday's bundle to the dev server, so edits appeared to do
nothing. Dev now serves a self-destructing worker. - Prompt blocks are capped at 4 s everywhere, not just in the UI — longer beats chain instead of
being authored into something the timeline would refuse.
Packaging
mcp/ships with the package, sonpx cozyclay mcpworks without a clone.exportsmakescozyclay/src/*a public contract instead of an accident.threeis declared as an optional peer: the studio bundles its own copy, but anything importing
cozyclay/src/*needs it, and now npm says so.
v0.1.0
First tagged release. CozyClay restarts its version line at 0.1.0 — the studio is real and usable, but the scene format and the ARDY bridge contract are still moving, and the version number should say so.
npx cozyclayHighlights
Scenes are documents. The hierarchy holds named scenes you can create, switch, duplicate and delete. Each one owns its own set, cast and camera work — moving an actor in one scene no longer moves it in every other.
Cuts. The timeline is no longer one continuous take. Shot blocks are placed freely, may leave gaps, and can be removed down to none; playback hard-cuts at their edges, and frames outside any shot leave the camera to you.
One camera surface. Each shot owns its camera: keys, follow, and a drawn dolly rail with an authored start point, a dolly speed limit and a pitch offset. The rail rides inside the shot that owns it, edited from a single bar under the timeline instead of two competing panels.
Motion generation, locally. The ARDY bridge keeps its HTTP contract but now runs on this machine when no CCLAY_ARDY_HOST is set — npm run ardy:setup provisions everything into ~/.cozyclay/. A persistent warm worker turns same-prompt regeneration from ~160 s into ~0.4 s on Apple Silicon.
Video providers. Runway, Seedance, Kling and Veo adapters sit behind one provider-neutral bridge; the request is conditioned on the staged shot's framing, duration and subject rather than whatever the viewport happens to show.
Video to pose keys. Extraction lands as ordinary cozyclay.pose.v1 keys, so the timeline, IK layer and generation path all apply unchanged. UI wiring is still open — see #11.
Fixes
- Recorded MP4s reported a duration 30× short, because
mdhd.durationwas written in the movie timescale instead of the media timescale. Every Record export was rejected as a reference video; both the muxer and the download path are fixed. (#13) tools/ardy/cclay_motion_edit.pycould not be parsed from a fresh clone. (#7)
Notes
- npm carries older
1.xbuilds from before this reset.0.1.0is the current line; treat1.xas retired. - Requires Node.js 22+. Motion generation is optional and off until you point it at a machine that can run it.