Skip to content

Releases: NomaDamas/CozyClay

CozyClay 1.6.0

Choose a tag to compare

@HaD0Yun HaD0Yun released this 25 Aug 05:39
f269d12

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 global cclay launches get a
    signed-package-verified anonymous installation ID.
  • The existing scene, edit, motion, export, and activation funnel is available
    for npm sessions with distribution: npm and app_version properties.
  • Source checkouts, forks, CI, tests, malformed or unsigned packages, and
    opted-out launches remain untracked.
  • cclay telemetry status|on|off controls 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-later combined 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 .cclayproject files; capture, prompt-block installation, motion generation and
    atomic live batches remain editor-only.
  • Motion from plain beats. generate_motion preserves 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 1x1x1 regardless 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...
Read more

CozyClay 1.5.0

Choose a tag to compare

@HaD0Yun HaD0Yun released this 23 Aug 17:41

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

Choose a tag to compare

@HaD0Yun HaD0Yun released this 23 Aug 08:54

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

Choose a tag to compare

@HaD0Yun HaD0Yun released this 23 Aug 08:12

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-later combined 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

Choose a tag to compare

@HaD0Yun HaD0Yun released this 20 Aug 07:05

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 .cclayproject files the studio opens.
  • Motion from plain beats. generate_motion takes 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 1x1x1 regardless 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, so npx cozyclay mcp works without a clone.
  • exports makes cozyclay/src/* a public contract instead of an accident.
  • three is 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

Choose a tag to compare

@HaD0Yun HaD0Yun released this 14 Aug 18:54

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 cozyclay

Highlights

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.duration was 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.py could not be parsed from a fresh clone. (#7)

Notes

  • npm carries older 1.x builds from before this reset. 0.1.0 is the current line; treat 1.x as retired.
  • Requires Node.js 22+. Motion generation is optional and off until you point it at a machine that can run it.